问题描述
目前,我正在编写一个自动化流程的脚本,在这一点上,我的脚本简短而简单,但我在使用 expect/send
时遇到了一些问题。
代码:
#!/usr/bin/expect -f
#!/bin/bash
set ip ***
set ip2 ***
set user ***
set usr2 ***
set OTP [lindex $argv 0]
spawn ssh "usr@$ip";
expect "OTP Password:"
send -- "$OTP"
interact
expect "prompt >"
send -- "ssh usr2@$ip2"
interact
对于这一点,脚本在 first ssh 之前一直有效,但是......对于 second ssh (expect "prompt >" / send -- "ssh $ip2"
) 它不起作用......我不明白为什么。我已经尝试了一些命令,如 expect eof
、wait
、timeout
,但我也没有检查过希望版本是最新的(5.45)。
你有什么想法吗?谢谢!
解决方法
您的 spawn
对我来说看起来不错,但是在 send
中,您忘记发送回车,这实际上终止了命令:
send -- "$OTP\r"