TELNETによるコマンド実行
Net::Telnetモジュールを使います。
詳しくはperldoc Net::Telnetを見てください。
# お手軽な方法 use strict; use Net::Telnet; # 接続情報(環境に合わせて修正する) my $host = 'hostname'; # 接続ホスト名 or IPアドレス my $user = 'username'; # ユーザ名 my $pass = 'password'; # パスワード my $prompt = '/\[.+\]\$ $/'; # プロンプト(正規表現) my $telnet = new Net::Telnet( Timeout => 10, Prompt => $prompt, ); # ホストに接続してログインする $telnet->open($host); $telnet->login($user, $pass); # コマンドの実行 my @result; @result = $telnet->cmd("pwd"); print @result; # コマンドの実行 @result = $telnet->cmd("ls -l"); print @result; # 接続の切断 $telnet->close;
# expect風の方法 use strict; use Net::Telnet; # 接続情報(環境に合わせて修正する) my $host = 'hostname'; # 接続ホスト名 or IPアドレス my $user = 'username'; # ユーザ名 my $pass = 'password'; # パスワード my $prompt = '/\[.+\]\$ $/'; # プロンプト(正規表現) my $telnet = new Net::Telnet( Timeout => 10, ); # ホストに接続する $telnet->open($host); # loginと出力されたらユーザ名を送信 $telnet->waitfor('/login/i'); $telnet->print($user); # passwordと出力されたらパスワードを送信 $telnet->waitfor('/password/i'); $telnet->print($pass); # プロンプトが出力されるまで待つ $telnet->waitfor($prompt); # コマンドを送信してプロンプトが出力されるまで待つ my $result; $telnet->print("pwd"); ($result) = $telnet->waitfor($prompt); print $result; # コマンドを送信してプロンプトが出力されるまで待つ $telnet->print("ls -l"); ($result) = $telnet->waitfor($prompt); print $result; # 接続の切断 $telnet->close;
関連項目
・FTPによるファイル取得・FTPによるファイル転送