expect
是一个用于自动化交互式应用程序的工具,特别适用于需要输入用户名和密码的场合
expect script
其中,script
是一个包含预期输出的脚本文件。
expect_out(buffer)
变量可以捕获命令的输出。例如,等待 “password:” 提示:expect "password:"
send
命令向交互式应用程序发送输入。例如,发送 “my_password”:send "my_password\r"
\r
是回车符,用于模拟用户按下 Enter 键。
expect
命令支持几种等待模式,如 spawn
, expect
, send
, interact
等。例如,使用 spawn
启动一个新的交互式进程:spawn ssh user@example.com
if
语句和正则表达式进行条件判断。例如,检查是否收到特定的输出:if { $expect_out(buffer) =~ "password:" } {
send "my_password\r"
}
expect_out(timeout)
变量设置超时时间。例如,等待 10 秒:expect {
"password:" {
send "my_password\r"
}
timeout {
puts "Timeout occurred"
exit 1
}
}
while
循环可以重复执行某个命令。例如,不断发送 “ping” 命令,直到遇到特定的输出:set count 0
while {$count < 5} {
expect "password:" {
send "my_password\r"
set count [expr $count + 1]
}
sleep 1
}
expect
支持多种变量和操作符,如字符串比较、正则表达式等。例如,检查输出是否包含 “error”:if { $expect_out(buffer) contains "error" } {
puts "Error found"
}
这些是 expect
命令的一些常见用法。expect
的功能非常强大,可以实现许多复杂的自动化任务。