2016-07-22 43 views
2

我有一個期望的腳本我用ssh。我的一些主機會提示使用RSA主機密鑰文本,有些則不會。我如何設置我的腳本爲一個如果/然後在預期。這是我到目前爲止。如果然後邏輯裏面預期的腳本

#!/usr/bin/expect -f 

set ipaddress [lindex $argv 0]; 
spawn ssh [email protected]$ipaddress 
expect "Are you sure you want to continue connecting (yes/no)?" 
send "yes\r" 
expect "[email protected]$ipaddress's password:" 
send "password\r" 
set prompt {\$ $} 
expect -re $prompt 
send "$command\r" 
expect -re $prompt 
send "quit\r" 
interact 

我需要建立在該部分的if/then邏輯是以下兩行:

expect "Are you sure you want to continue connecting (yes/no)?" 
send "yes\r" 

的邏輯流程將是:

if expect "Are you sure you want to continue connecting (yes/no)?" 
then send "yes\r" 
else 
expect "[email protected]$ipaddress's password:" 
etc.. 

我怎樣才能做到這一點?

回答

1

這是工作對我來說,下面的代碼修改。

expect { 
    "Are you sure you want to continue connecting (yes/no)?" { 
     send "yes\r" 
     exp_continue 
    } 
    "[email protected]$ipaddress's password:" { 
     send "password\r" 
    } 
    } 
+1

你在錯誤的地方得到了'exp_continue':它應該在「你確定」塊中。因爲在這兩種情況下你都必須輸入密碼。 –

+0

更新我的答案以反映您的建議。自從移動exp_continue之後,我還沒有遇到過單一故障,所以看起來你是正確的。 – user53029