expect {"*yes/no" { send "yes\r"; exp_continue }"*password:" { send "$passwd\r" }}
时间: 2024-05-24 09:07:48 浏览: 180
expect中为send语句上加变量的代码
这是一个使用Expect脚本自动化交互式命令行操作的例子[^1]。它的作用是在命令行中执行一个需要输入密码的操作,自动填入密码并回车以完成操作。
这个Expect脚本包含两个关键字expect和send。expect是关键字后面的花括号中的参数,用于匹配命令行输出中的特定字符串,send则是在匹配到对应字符串后需要发送的命令。
在这个例子中,expect包含两个参数。第一个是"*yes/no",表示如果命令行输出中包含"yes/no",则执行后面的send命令。第二个是"*password:",表示如果命令行输出中包含"password:",则执行后面的send命令。
在send中,"$passwd\r"表示变量passwd的值加上回车符"\r"。这里的变量passwd需要在脚本中定义并初始化。执行此脚本后,Expect会自动将$passwd的值发送到命令行,完成密码输入。
范例代码如下所示:
```shell
#!/usr/bin/expect
set passwd "my_password"
spawn ssh user@host
expect {
"*yes/no" {
send "yes\r"
exp_continue
}
"*password:" {
send "$passwd\r"
}
}
interact
```
阅读全文