期望脚本在提示之前发送密码

期望脚本在提示之前发送密码

我写了一个小expect脚本用于自动 ssh 到远程服务器。但有时我的expect脚本不起作用。实际上它在密码提示之前发送密码。这是我的脚本

#!/usr/bin/expect -f
set password xyzzys
# now connect using ssh
set host [lindex $argv 0]
spawn ssh vivek.gagrani@$host
expect "*?assword:*"
send -- "$password\r"
send -- "\r"
interact

运行此脚本时,我有时会看到以下输出:

spawn ssh vivek.gagrani@bvdev429
xyzzys         ----> password sent before asking

vivek.gagrani@bvdev429's password:

如何解决这个问题?

答案1

发送密码需要 10 秒吗?因为这是不匹配模式的默认超时。

命令模式的默认模式expect是“glob”。 glob 模式不会特殊对待点和括号。

如果要指定正则表达式,请使用

expect -re "(.*)assword:"

相关内容