Telnetの実行 (module)Net-Telnet

back
オプションモジュール
(deb) libnet-telnet-perl
Net/Telnet.pm だけ配置するだけでも動作
http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm

対象サーバへ telnet ログインし、任意のコマンドを実行

----
#!/usr/bin/perl

use Net::Telnet;

$user = "user";
$pass = "us//:/er";

$telnet = Net::Telnet->new(Host => '133.197.59.170');
$telnet->login($user, $pass) || die "can not login";

push @result, $telnet->cmd('ls -F');
push @result, "\n";
push @result, $telnet->cmd('ls -l');
$telnet->close();

foreach(@result){
        print;
}

exit;
----

$telnet->cmd(xxx)の戻り値は、スカラコンテキストではコマンドの実行に成功すれば
真が、リストコンテキストでは、コマンドの実行による結果の文字列が行ごとのリストが
返る。
ただし、プロンプト等も入ってしまうので、コマンド実行結果のみが
欲しければ、リダイレクトで(リモートの)ファイルへ出力し ftp get
したほうがいいかも。
なお、コマンドの実行結果は、リモートでのコマンドの実行結果が成功/失敗かは
関係なく(コマンドがないとか引数のファイルがないとかまぁいろいろ)、cmd メソッドの
実行が成功/失敗かの値になるので注意。

back