0

リモートサーバー上のファイルを読み取り、ファイル内のいくつかのパラメーターを変更し、ファイル全体のデータまたは特定のデータを戻り値として取得するperlスクリプトを作成したいと思います。

実際、私が考えていたのは、cpanopensshユーティリティを使用してssh接続を作成し、サーバー側でスクリプトを呼び出すことです。このスクリプトは、パラメーター値の読み取りと変更をすべて行います。しかし、このアプローチの問題は、ファイルデータではなく、戻り値として成功または失敗のみを取得することです。

この機能を実現する方法を教えてもらえますか?

前もって感謝します....

4

1 に答える 1

1

これは、あなたが求めていることを行う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セッションと同じようにコマンドを実行できるということです。

于 2012-06-20T17:10:52.467 に答える