次のコードでは、別のマシンにsshを実行して、ファイルが存在するかどうかを確認しようとしています。
ファイルが存在する場合は、そのファイルにアクセスしているユーザーがそのファイルの作成者かどうか、つまりユーザー名がログファイルに含まれているかどうかを確認する必要があります。
存在する場合は、そのファイルを削除する必要があります。Perlの1セッションでのssh操作
$user = $ENV{USER};
$il_check_cmd = "cat $shared_il_path/$il_name/info/.info_cat.log";
my $ssh_delete = Net::SSH::Perl->new($hostname, protocol => '1,2', debug => 0, interactive => 1) ;
$ssh_delete->login($username, $password);
($stdout,$stderr,$exit) = $ssh_delete->cmd("$il_check_cmd");
if((defined $stderr) && ($stderr =~ /No such file or directory/))
{
print "-E- $RUNCMD: \"$il_name\" you have entered does not exist in \"$shared_il_path\"!! !\n";
print "-E- $RUNCMD: or\n";
print "-E- $RUNCMD: \"$il_name\" does not contain \".info_cat.log\" file!!!\n";
print "-E- $RUNCMD: Exiting...\n";
exit;
}
@content = split(/ /,$stdout);
chomp($user_e = shift(@content));
if($user_e =~ /\b$user\b/)
{
print "This is the user who created the file";
//then remove the $shared_il_path/$il_name/info/.info_cat.log
}
SSHセッションで実行されるコマンドに関する返品ステータスまたは何らかのステータスを取得できますか? – Rajeev
'$ exit'に置いた終了コードの意味ですか? ( 'exit(0)'がデフォルトであり、コードが死んだ場合は0以外の値になります。エラーの場合は 'exit(1)'を呼び出すこともできます) $ stdout'。 – ikegami
エラーが発生した場合にexit(1)を呼び出す方法。 – Rajeev