问题在于期待; expect发送密码字符串(pass123)并且它错过了密码问题,它仍然等待密码.
实际上密码后输入了密码(pass123)
题.在大多数情况下,expect脚本工作正常,但有时它会丢失密码.
问题的例子
./active.ksh spawn ssh 10.10.18.61 sh: /usr/local/bin/stty: not found This computer system,including all related equipment,networks and network devices (specifically including Internet access),is provIDed only for authorized uss Password: * my remark - pass123 string was missed the Password Question pass123 Password:
剧本
#!/bin/ksh VIP_ADDRESS=10.10.18.61 expect_for_verify_which_active_machine=`cat << EOF set timeout -1 spawn ssh $VIP_ADDRESS expect { ")?" { send "yes\r" ; exp_continue } Password: {send "pass123\r"} } expect > {send "hostname\r"} expect > {send exit\r} expect eof EOF` expect -c "$expect_for_verify_which_active_machine"
正确结果的例子
./active.ksh [FrIDay,February 24,2012 2:32:06 PM IST] INFO Verify which is active SMU machine spawn ssh 10.10.18.61 sh: /usr/local/bin/stty: not found This computer system,networks and network devices (specifically including Internet access),is provIDed only for authorized uss yes Password: Last login: Fri Feb 24 14:32:06 2012 from smu1a This computer system,is provIDed only for authorized uss solaris1:/ ROOT > hostname solaris1 solaris1:/ ROOT > exit logout Connection to 10.10.18.61 closed.解决方法 如果您在登录期间监视字符串,您将希望避免使用“密码:”,您会发现它并不总是大写.
将你的期望改为-re“(.*)assword:”或“assword:”往往会更有效地抓住这条线.
如果你发现时间仍然太快,你可以睡一觉;在你发送之前
这就是我用来期待的东西
expect { "(yes/no)?" { send "yes\n" } "passphrase" { send "\r" } -re "(.*)assword:" { sleep 1; send -- "password\r" } -re $prompt { return } timeout { puts "un-able to login: timeout\n"; return } eof { puts "Closed\n" ; return }}总结
以上是内存溢出为你收集整理的linux – 期望脚本期望错过发送字符串延迟问题全部内容,希望文章能够帮你解决linux – 期望脚本期望错过发送字符串延迟问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)