因此,我有一個shell腳本ssh到一臺機器,然後使用expect通過期望傳遞一個密碼,然後運行一個matlab腳本。問題是我想爲網絡上的所有機器做這件事,如果它是我沒有連接之前要求我輸入密碼,它告訴我,它不能驗證機器是否問我,如果我想要連接並等待yes \ no響應。shell腳本「預計」來自ssh的各種響應
我希望我的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。 您確定要繼續連接(是/否)嗎?「
這是我的代碼,由於某些原因,我的加法不起作用,但工作正常,只是我在堆棧交換中發現的「密碼:」位。我可以看到終端,它詢問是\否問題,但是然後我的腳本沒有迴應。我猜測我以某種方式使用期望錯誤,但我不知道如何。
#!/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"
@generic,有一個期望的解決方案(搜索「yes/no exp_continue」),但這是一個更好的方法來做到這一點。 –
Spasibo Oleg,ochen blagodaren! 並感謝格倫,可能對未來的問題有用。 –