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