shell脚本“期待”来自ssh的各种响应

时间:2016-11-12 16:55:49

标签: linux shell ssh expect

所以我有一个shell脚本ssh到一台机器,然后使用expect通过expect传递一个密码,然后运行一个matlab脚本。问题是我想对网络上的各种机器执行此操作,如果它是在我要求输入密码之前我没有连接的那个,它告诉我它无法验证机器是否询问我是否我想连接并等待是\没有回复。

我希望我的shell脚本能够处理它只是要求输入密码的情况以及它还设法处理yes \ no的情况。我不知道如何以“期待”来做这件事,因为它没有收到预期它会挂起的东西。

由于某些原因,我使用我知道我还没有登录的机器测试它时,处理yes no响应的附加代码不起作用。这是他们回复的格式。

“无法确定主机'七(128.40.41.89)'的真实性。 RSA密钥指纹是d6:9d:d0:61:5f:bb:36:9a:74:2c:f6:b9:a7:79:03:98。 你确定要继续连接(是/否)?“

这是我的代码,由于某种原因不适用于我的添加,但只使用我在堆栈交换中找到的“assword:”位工作正常。我可以看到终端,它询问是\没问题,但后来我的脚本没有回应。我猜我在某种程度上使用了期望错误,但我不知道如何。

#!/bin/sh
ssh seven
expect "(yes\no)? "
send "yes\r"
expect "assword:"
send "my password goes here\r"

matlab -nodisplay -nojvm -nosplash -nodesktop -r \
"try, run('\path\matlab_script.m'), catch me, fprintf('%s / %s \n',me.identifier,me.message), end, exit"

1 个答案:

答案 0 :(得分:1)

一种可能的解决方法是在StrictHostKeyChecking设置为no的情况下运行ssh:

[INFO] Apache FtpServer Core .............................. FAILURE

这将自动将未知主机密钥添加到已知主机列表中。