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によるファイル転送
