expect使用示例
如果通过对expect重定向的方式写脚本的话,这样的脚本适合出现在脚本文件中,如果是通过expect -c这样的方式调用,则运行在命令行上
示例一
该示例适合运行在脚本文件中,然后通过expect命令运行脚本文件,比如脚本名test.sh
|
|
运行方式
|
|
示例二
该示例适合运行在命令行,如果将该示例添加到脚本文件运行则会执行不了,直接复制该示例粘贴到命令行上回车运行即可
|
|
增加端口转发和代理
|
|
-D 127.0.0.1:1080:开启一个 SOCKS5 代理,监听在本机的 127.0.0.1:1080
验证代理
|
|
示例三
这是一个常规示例,同样,运行在命令行上
|
|
使用for循环
|
|
expect eof 和 interact 有什么区别
expect eof 和 interact 是 Expect 脚本中两个非常重要的命令,它们有着本质的区别:
expect eof - 等待子进程结束
作用:等待 spawn 启动的子进程执行完毕
行为:阻塞直到子进程退出
适用场景:自动化脚本执行,不需要用户交互
示例:
|
|
interact - 将控制权交还给用户
作用:将键盘输入传递给子进程,允许用户与程序交互
行为:Expect 停止自动化控制,用户可以直接操作
适用场景:部分自动化后需要用户手动操作
示例:
|
|
对比表格:
| 特性 | expect eof | interact |
| 控制权 | Expect 保持控制 | 交还给用户 |
| 等待对象 | 等待进程结束 | 不等待,立即返回 |
| 典型用途 | 完全自动化 | 半自动化 |
| 后续代码 | 可以继续执行 | 通常放在脚本末尾 |
| 进程状态 | 进程结束后继续 | 进程继续运行 |