【发布时间】:2016-04-25 08:22:22
【问题描述】:
我有一个问题,我正在尝试执行分配在另一台服务器上的 PERL 脚本。如果我在 Linux Shell 中执行命令,脚本会正确运行。如果我在apache Tomcat的同一服务器中执行分配perl脚本的脚本,运行正常,但是当我尝试通过Tomcat通过ssh执行脚本时,总是以错误代码255结束。
Perl 脚本:
#!/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 root@myserver.com '/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");
}
如果我将命令变量更改为
String command = "/usr/bin/perl /var/www/testPerl.pl A";
返回码没问题(0或192)
必须远程执行,所以我无法将真正的PERL复制到tomcat目录。我做 localy 只是为了测试。
【问题讨论】:
-
直接进入ssh命令是否运行(不带Tomcat)?您收到任何错误消息吗?是否为 Tomcat 用户设置了无密码 SSH?
/var/www中的脚本是否也存在于您 ssh 到的服务器上? -
当我使用 shell Linux 运行时,它运行完美。如果我使用“A”参数运行,则返回 0,或者当我使用其他参数运行时返回 192