期望脚本继续运行,即使期望不匹配任何内容

问题描述

#!/usr/bin/expect 
spawn ssh admin@10.10.10.10 -o StrictHostKeyChecking=no
expect "5555:"
send "$password\n"
expect "% "
send "exit\n"

无论写什么值,都期望“ 5555:”此命令仍然有效,并且我具有ssh连接。

解决方法

您应该设置一个超时时间和一个超时操作:

#!/usr/bin/expect
set timeout 5 
spawn ssh admin@10.10.10.10 -o StrictHostKeyChecking=no
expect {
   "5555:"  { }
   timeout { exit 2 }
}
send "$password\n"
expect "% "
send "exit\n"

一些额外的信息:默认超时是10秒。在expect进行操作时,如果$timeout秒后仍未看到该模式,则expect命令而没有一个“超时”模式会简单地返回,脚本将继续