これは、あなたが求めていることを行う1つの方法ですNet::SSH::Expect
use Net::SSH::Expect;
my $ssh = Net::SSH::Expect->new (
host => "some.example.net",
password=> 'your-password',
user => 'you',
raw_pty => 1
);
my $login_output = $ssh->login();
if ($login_output !~ /Welcome/) {
die "Login has failed. Login output was $login_output";
}
$ssh->exec("perl -i -pe 'tr/9/a/;' temp.txt");
my $cat=$ssh->exec("cat temp.txt");
print($cat);
リモート サーバー上のファイル (temp.txt) には 1 行しか含まれておらず0123456789
、スクリプトを実行すると次の出力が得られます。
$ perl /tmp/a.pl
012345678a
ここでの要点は、このモジュールを使用すると、リモート マシンにログインして、他のssh
セッションと同じようにコマンドを実行できるということです。