2016-07-26 2 views
-1

매개 변수가 필요한 스크립트 bash가 있습니다.jash에서 호출 할 때 bash 스크립트가 작동하지 않습니다.

내가 퍼티에서 직접 호출 할 때, 그것은 작동합니다, 암탉은 제 jee 프로그램에서 작동하지 않습니다. 그리고 어떤 오류도 보여주지 않습니다.

String[] cmdArray = {"sudo", "ssh", "-tt", "[email protected]", "/root/dve", "-l", "89.40.112.120,89.40.112.248", "you.mp4", "-s",".teeeest.avi" }; 

List<ObjectNode> listFileNode = new ArrayList<ObjectNode>(); 

try{ 
     Runtime rt = Runtime.getRuntime(); 
     ProcessBuilder pb = new ProcessBuilder(cmdArray); 
     Process proc = pb.start();  // Start the process. 
     System.out.println("Script executing"); 
     rc= proc.waitFor(); // Wait for the process to finish. 
     System.out.printf("Script executed successfully in ", rc); 

InputStream stderr = proc.getErrorStream(); 
        InputStreamReader isr = new InputStreamReader(stderr); 
        BufferedReader br = new BufferedReader(isr); 

        String line = null; 
        System.out.println("<ERROR___EXEC>"); 
        while ((line = br.readLine()) != null){ 

         System.out.println(line); 
         node.put("line",line); 
         listFileNode.add(node); 
         } 
        System.out.println("</ERROR___EXEC>"); 
        int exitVal = proc.waitFor(); 
        System.out.println("Process exitValue: " + exitVal); 


        InputStream processInputStream =proc.getInputStream(); 
        InputStreamReader inputStreamReader = new InputStreamReader(processInputStream); 
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

        System.out.println("<RESULTAT___EXEC>"); 
        while ((line = bufferedReader.readLine()) != null){ 

         System.out.println(line); 
         node.put("lineR",line); 
         listFileNode.add(node); 

        } 
        System.out.println("</RESULTAT___EXEC>"); 

      }catch (Throwable t) 
       { 
       t.printStackTrace(); 
       } 

내가 일주일에서이 붙어입니다 좀 도와주세요 그리고 난 당신은 자바 코드에서 sudo 명령을 사용할 수 없습니다

+0

문제를 재현하는 데 필요한 코드 만 있으면 충분합니다. – sjsam

+0

안녕하세요, 자바 코드를 넣어 내 봄 컨트롤러 및 스크립트를 실행할 수 있습니다 여기에 : https://github.com/nergdron/dve –

답변

0

솔루션을 찾을 수 없습니다 :

이 내 자바 코드 . 루트 권한이있는 응용 프로그램을 실행해야하는 경우 Java 코드를 실행하기 전에 root로 전환해야합니다.

자바 코드에서 처리하려면 setuid으로 전화해야합니다. 하지만 자바 코드에서 setuid 번으로 전화를 걸 수 있는지 모르겠습니다. 이를 위해 루트로 전환하기 위해 C/C++ 래퍼가 필요할 수 있습니다. 참조 : 래퍼에 대한 질문은 http://unix.stackexchange.com입니다.

관련 문제