Bash 脚本 - 使用 SSH 登录后的第二次登录

Bash script - second login after logging in with SSH

在您成功通过 SSH 连接到 IP Cisco phone 后,另一个登录提示 (snoopyplus login:) 之后会出现 Password:。 我想创建一个生成 ssh 的脚本,连接到设备,在第二个登录提示中再次登录,然后执行某些操作。到目前为止,我尝试过类似的方法:

 $!/usr/bin/expect -f
 spawn ssh user@ip
 expect "assword:"
 send "pw"
 expect "snoopyplus login:"
 send "user2"
 expect "Password:"
 send "pw2"

脚本与 SSH 连接并在 snoopyplus login: 上结束我试图期待不同的词(登录、奥金、史努比..)而不是 "snoopyplus login" 但它从来没有奏效。我用 sshpass 测试了它,但它最终出现在同一个地方。 我不想使用 SSH 密钥,也不介意让密码可见。 有办法吗? 谢谢

我会在你第一次发送密码后设置一个休眠间隔,这样可以让 expect 有时间。我的大部分期望使用是在 python 中,pexpect 使用 sendline 附加一个回车符 return,看起来您需要在 Tcl 中手动添加它。此外,根据我在多个不同的制造商和 OS 之间的经验,期待您的提示结束('>'、“#”、“%”、“:”)可以缓解一些问题。