shell 中expect的用法
时间: 2023-05-30 11:05:37 浏览: 149
shell中嵌套执行expect命令实例
expect是一个用于自动化交互的工具,可以在shell脚本中使用。
expect的基本用法是:
1. 安装expect
在Ubuntu中,可以使用以下命令安装expect:
```
sudo apt-get install expect
```
2. 编写expect脚本
expect脚本的基本结构是:
```
#!/usr/bin/expect
spawn [command]
expect {
[pattern1] {action1}
[pattern2] {action2}
...
}
```
其中,spawn命令用于启动被自动化的程序,pattern用于匹配程序输出的信息,action用于执行相应的操作。
例如,以下脚本可以自动登录ssh服务器:
```
#!/usr/bin/expect
set timeout 10
set ip [lindex $argv 0]
set username [lindex $argv 1]
set password [lindex $argv 2]
spawn ssh $username@$ip
expect {
"(yes/no)? " {
send "yes\r"
exp_continue
}
"password: " {
send "$password\r"
}
}
interact
```
在这个脚本中,首先定义了一些变量,然后使用spawn命令启动ssh连接。接着,使用expect匹配了两种不同的输出信息,一种是确认是否连接到新的主机,另一种是输入密码。当匹配到"(yes/no)?"时,发送"yes\r",并继续等待其他匹配;当匹配到"password:"时,发送密码。最后使用interact命令进入交互模式,允许用户手动操作连接。
3. 运行expect脚本
使用以下命令运行expect脚本:
```
expect [script]
```
其中,[script]是expect脚本的文件名。在运行脚本时,可以传入一些参数,例如:
```
expect ssh_login.expect 192.168.1.100 root password
```
这将连接到IP地址为192.168.1.100的服务器,使用root用户名和password密码进行登录。
阅读全文