Net::SSH::Perl と呼ばれる CPAN 上の Perl モジュールを使用して、リモート コマンドを実行できます。
リンク: http://metacpan.org/pod/Net::SSH::Perl
概要の例:
use Net::SSH::Perl;
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
コマンドは次のようになります
my $cmd = "diff /home/.../file.txt /home/.../file2.txt";
編集: ファイルは別のサーバーにあります。
Net::SSH::Perl を使用してファイルを読み取ることができます。
#!/bin/perl
use strict;
use warnings;
use Net::SSH::Perl;
my $host = "First_host_name";
my $user = "First_user_name";
my $pass = "First_password";
my $cmd1 = "cat /home/.../file1";
my $ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my($stdout1, $stderr1, $exit1) = $ssh->cmd($cmd1);
#now stdout1 has the contents of the first file
$host = "Second_host_name";
$user = "Second_user_name";
$pass = "Second_password";
my $cmd2 = "cat /home/.../file2";
$ssh = Net::SSH::Perl->new($host);
$ssh->login($user, $pass);
my($stdout2, $stderr2, $exit2) = $ssh->cmd($cmd2);
#now stdout2 has the contents of the second file
#write the contents to local files to diff
open(my $fh1, '>', "./temp_file1") or DIE "Failed to open file 1";
print $fh1 $stdout1;
close $fh1;
open(my $fh2, '>', "./temp_file2") or DIE "Failed to open file 2";
print $fh2 $stdout2;
close $fh2;
my $difference = `diff ./temp_file1 ./temp_file2`;
print $difference . "\n";
このコードはテストしていませんが、次のようなことができます。リモート コマンドを実行するには、Perl モジュール Net::SSH::Perl をダウンロードすることを忘れないでください。
Perl Core Modules には Diff は実装されていませんが、CPAN には Text::Diff という名前の別のものがあるので、それもうまくいくかもしれません。お役に立てれば!