今時telnetかよっていう感じだけど、一部のNW機器はtelnetしかなかったりするので。で、やってみたんだけどopen、waitforで失敗した場合は有無をいわさず例外で終了するぽい?ので、エラー処理が必要な場合はeval { } で囲めばいいのかな。
- login
use Net::Telnet my $prompt = '/\[.+\]\$/'; my $telnet = Net::Telnet->new( Timeout => 10, Prompt => $prompt, #Dump_log => './dump.log', #Input_log => './input.log', ); $telnet->open($host); my $ok = $telnet->login( Name => $user, Password => $pass, );
- waitfor
waitforで指定したプロンプトの応答を待って、入力を指定することもできるらすい。ログインプロンプトが特別な場合に利用?ciscoのスイッチとかかな。と思ったらcisco用にはNet::Telnet::Ciscoってのがあった。
use Net::Telnet; my $prompt = '/\[.+\]/'; # プロンプト(正規表現) my $telnet = Net::Telnet->new( Timeout => 5, Prompt => $prompt, #Dump_log => './dump.log', #Input_log => './input.log', ); $telnet->open($host); $telnet->waitfor('/login: /i'); $telnet->print($user); $telnet->waitfor('/password: /i'); $telnet->print($pass); $telnet->waitfor($prompt); print $telnet->cmd($cmd); $telnet->close;