expect兼容多个回显内容

#!/usr/bin/expect


set timeout 20


set user [lindex $argv 0]


set password [lindex $argv 1]


spawn su -  ${user} -c "ulimit -a"


#expect "Password:"
#send "$password\r";


expect {
"yes/no" { send "yes\r"}
"Password:" { send "$password\r" }
}




expect eof
catch wait result
expect脚本中,处理多个值通常涉及到对脚本的交互式输出进行解析。Expect是一个用于自动化控制交互式应用程序的工具,它可以模拟用户输入、等待输出,并根据输出做出相应的响应。Expect脚本通常使用`exp_send`发送命令,并使用`expect`命令来等待和匹配特定的输出。当需要处理多个值时,可以利用正则表达式来匹配期望的多个输出。 这里是一个简单的例子来说明如何在expect脚本中处理多个值: ```tcl #!/usr/bin/expect # 启动交互式程序,例如telnet或ftp spawn ftp example.com # 等待特定的提示符,比如登录提示符 expect "Name:" # 发送用户名 send "username\r" # 等待第二个提示符,比如密码提示符 expect "Password:" # 发送密码 send "password\r" # 假设我们想同时处理登录成功和失败的情况,我们可以使用正则表达式来匹配 # 下面的命令将匹配“[Ee]ntry allowed”或“Login incorrect”两种可能的输出 expect { -re { Entry allowed.* | Login incorrect.* } { # 这里可以根据匹配到的字符串执行不同的动作 if { $expect_out(0,string) == "Entry allowed" } { puts "登录成功" # 在这里执行登录成功后需要进行的操作 } else { puts "登录失败" # 在这里执行登录失败后需要进行的操作 } } } # 结束脚本 interact ``` 在上述脚本中,`expect`命令使用了`-re`选项来指定一个正则表达式,这样就可以同时匹配多个可能的返值。`expect_out(0,string)`变量用于获取匹配到的字符串,这样可以根据不同的返值来执行不同的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值