どんな助けでもいただければ幸いです。継承されたexpectスクリプトをTelnetからSSHのみのログインに移行する必要があります。まず、私は、しばらく前に作成された、期待されるすべてのスクリプトテンプレートを継承したルーター担当者です。これまでのところ、少しの変更で、スムーズに実行できました。クライアントはTelnetから離れたいと考えていたため、数か月前に、TelnetとSSHの両方をサポートするようにすべてのCiscoルーターとスイッチを準備しました。これまで、スクリプトは問題ありませんでした。ただし、Telnetのサポートとサーバーはまもなく廃止されるため、SSHのみの環境で機能するようにすべてのスクリプトテンプレートを再構成する方法を理解する必要があります。
したがって、shver出力を取得するための簡単なテンプレートの例を次に示します。
#!/usr/local/bin/expect -f
#
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
####################################################################
# Info for command line arguments
set argv [ concat "script" $argv ]
set router [ lindex $argv 1 ]
####################################################################
set timeout 15
set send_slow {1 .05}
spawn telnet $router
match_max 100000
expect Username:
sleep .1
send -s -- "user\r"
expect Password:
sleep .1
send -s -- "pass\r"
expect *
send -s -- "\r"
expect *
sleep .2
send -s -- "sh ver\r"
expect *
sleep .2
send -s -- "end\r"
expect *
sleep .2
send -s -- "wr\r"
expect *
sleep .2
send -s -- "exit\r"
expect *
sleep .2
expect eof