cisco デバイスの設定を取得するために、expect/bash スクリプトを作成しました。これは単純に cisco の実行構成をコピーし、tftp を使用して保存するだけです。
#!/bin/bash
while read line;
do
device=$line;
expect << EOF
spawn telnet $device
expect "Username:"
send "username\n"
expect "Password:"
send "password\n"
send "copy running-config tftp://192.168.244.14\r"
expect "Address or name of remote host"
send "\r"
expect "Destination filename "
send "\r"
expect "secs"
send "exit\r"
close
EOF
done < /home/marco/Scrivania/Host.txt
exit 0
私の問題は、いくつかのデバイスがあり、一部はtelnet接続を受け入れるように構成されており、他はssh接続のみを受け入れるように構成されていることです。したがって、私のスクリプトでは、次のようなものを追加します。
3 分経っても応答がない場合は、telnet を使用してデバイスに接続し、「spawn telnet...」コマンドをキャンセルして、ssh を使用して接続を試みます。
魔法のようにこれを実装できますか?