問題があります。別のサーバーに割り当てられたPERLスクリプトを実行しようとしています。 Linux Shellでコマンドを実行すると、スクリプトが正しく実行されます。 255Java TomcatからPerlスクリプトを実行します。255の終了コードを返します。
Perlのスクリプトを、私は、Apache Tomcatを同じサーバーでperlスクリプトを割り当てるスクリプトを実行する場合は、[OK]を実行しますが、私は、TomcatをSSH経由スクリプトを実行しようとすると、必ずエラーコードで終了:
私はString command = "/usr/bin/perl /var/www/testPerl.pl A";
にコマンド変数を変更した場合
#!/usr/bin/perl
my $sleeptime = 10;
sleep($sleeptime);
my $argumento=$ARGV[0];
if ($argumento eq "A") {
exit 0;
} else {
exit 192;
}
さて、これはJavaファイル
String command = "ssh [email protected] '/usr/bin/perl /var/www/testPerl.pl A'";
process = Runtime.getRuntime().exec(command);
process.waitFor();
if (process.exitValue() == 0) {
System.out.println("Show icon ok");
} else {
System.out.println("Show error");
}
のコードがあります
リターンコードはOK(0または192)
リモートで実行する必要がありますので、実際のPERLをtomcatディレクトリにコピーすることはできません。私はテストのためだけにロカイをやった。
は、sshコマンドを実行していますか?エラーメッセージが出ますか?パスワードなしのSSHはTomcatユーザー用に設定されていますか? '/ var/www'のスクリプトもあなたがsshに入っているサーバ上に存在していますか? – Thilo
シェルLinuxを使用して実行すると、完璧に動作します。 "A"引数で実行すると0、他の場合は192を返します – Guille