我写了一个小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:"