Я пытаюсь вызвать скрипт оболочки, содержащий команду SSH из java-программы. Однако это не удается с кодом ошибки 1.Вызов сценария оболочки содержит SSH из java
Моим кодом Java как:
public class CallScript {
private static String filePath="";
private static String args1="";
public static void main(String[] args) throws Exception{
if(args!=null && args.length > 0){
filePath = args[0];
if(args.length > 1){
args1=args[1];
}
}else{
throw new Exception("File Path should be first Argument");
}
System.out.println(args.length);
invokeScript(filePath,args1);
}
private static void invokeScript(String filePath, String arg1) throws Exception{
System.out.println("Inside invoke Script " + arg1);
Process p = Runtime.getRuntime().exec(filePath);
p.waitFor();
int exitVal = p.exitValue();
System.out.println("The Exit Value " + exitVal);
}
}
Я составил программу и поместил исполняемую банку в моей среде Unix.
сценарий оболочки, который вызывается из Java
ssh -l >test.log
Я использовал следующую команду, чтобы запустить мою Java программу:
java -jar invokeScript.jar /tmp/upog/test.sh
выход
Inside invoke Script
The Exit Value 1.
Если бы я есть немного другая команда в скрипте оболочки, например ls -al > test.log
, код работает с успехом, и я получаю возвращаемое значение 0.
Также, если я вызываю скрипт оболочки, содержащий команду ssh, непосредственно в поле Unix, он работает нормально. коробка есть беспарольное подключения)
Но это упущение, если я звонить из Java ...
Любой совет ....
Что такое значение «Filepath»? – EJP
filePath будет содержать args [0], который является /tmp/upog/test.sh – upog
Я считаю, что вы хотели выполнить команду Runtime.getRuntime(). Exec (arg1); '& not' Runtime.getRuntime(). Exec (filePath); ' – anishsane