2016-04-25 20 views
0

問題があります。別のサーバーに割り当てられた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)

リモートで実行する必要がありますので、実際のP​​ERLをtomcatディレクトリにコピーすることはできません。私はテストのためだけにロカイをやった。

+0

は、sshコマンドを実行していますか?エラーメッセージが出ますか?パスワードなしのSSHはTomcatユーザー用に設定されていますか? '/ var/www'のスクリプトもあなたがsshに入っているサーバ上に存在していますか? – Thilo

+0

シェルLinuxを使用して実行すると、完璧に動作します。 "A"引数で実行すると0、他の場合は192を返します – Guille

答えて

1

tomcatユーザーとしてTomcatサーバーからSSH呼び出しを試しましたか?

ssh [email protected] '/usr/bin/perl /var/www/testPerl.pl A' 

のssh引数として-vを追加してみてくださいとssh接続が機能しているかどうかを確認するために出力をキャプチャします。 RSAAuthentication(パスワードベースではなくキーベース)が欠落しているか、それ以外のものが動作しない可能性があります。

は、デバッグ用のPerlからいくつかの値を返す試してみてください:あなたは(Tomcatのなしで)直接入力するとき

print "I'm running (STDOUT)\n"; 
print STDERR "I'm running (STDERR)\n"; 
+1

...私はちょうど(http://i2.kym-cdn.com/entries/icons/original/000/010/)です。 277/069.jpg)。私は開発者用のユーザー用のrsaを作成しましたが、.classファイルを実行するtomcatユーザー用はありません... Tomcatユーザー用のRSAを作成した後、 – Guille

関連する問題