作者:hahah | 来源:互联网 | 2024-11-18 13:38
参考:
https://www.cnblogs.com/lzrabbit/p/4298794.html
Expect 是 Linux 系统中用于与子进程进行交互的命令,广泛应用于自动化任务。Python 中有一个名为 pexpect 的模块,提供了类似的功能。
例如,使用 SSH 登录时需要输入密码,可以利用 Expect 自动完成这一过程。同样,修改用户密码时也可以使用 Expect 来替代手动操作。
Expect 支持多种执行方式,包括交互式、执行文件和直接执行命令。
1. 交互式
在命令行中输入 expect 进入交互模式。常用命令如下:
send
: 发送字符串到子进程或当前进程,注意字符串末尾需加 \n
作为结束符。 expect
: 期望的字符串。 spawn
: 启动一个子进程。 interact
: 使用户能够与子进程交互。
2. 将 Expect 命令写入文件并执行
Expect 最常用的语法是基于 Tcl 语言的模式-动作结构。通过多分支匹配字符串并执行相应的动作。
expect { "hi" { send "You said hi\n" } "hello" { send "Hello yourself\n" } "bye" { send "That was unexpected\n" } }
示例脚本:
#!/usr/bin/expect -f set ipaddr "192.168.16.222" set passwd "yourpasswd" spawn ssh root@$ipaddr # expect 按顺序执行,大括号内匹配相应模式并执行相应命令。 expect { "(yes/no)?" { send "yes\n" expect "assword:" { send "$passwd\n" } } "assword:" { send "$passwd\n" } }
3. 使用 -c 参数直接在命令行中执行
expect -c 'expect "dddd" {send "dddd"}'