2016-07-22 7 views
2

私はsshに使用するスクリプトを用意しています。私のホストの中には、RSAホストのキーテキストが表示されるものもあれば、そうでないものもあります。 if/thenを想定してスクリプトを設定するにはどうしたらいいですか?ここまで私がこれまで持っていたことがあります。その場合、ロジック内部にスクリプトがあります

#!/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 /ロジックで構築する必要がある部分は、次の2行です:

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

0

あなたは「盲目的に」あなたはここで提案しているもののような何かを行うことができ、ホストキーを受け入れるつもりなら:

https://askubuntu.com/questions/123072/ssh-automatically-accept-keys

提案のカップルがあります - のssh-キースキャン方法は、より安全な方法です。

関連する問題