2016-07-26 3 views
-1

У меня есть скрипт bash, который требует параметров.bash скрипт не работает при вызове jee

, когда я называю это непосредственно из шпатлевки, он работает, потому что я делаю из моей программы jee, это не работает и не показывает мне никаких ошибок.

Это мой Java-код:

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(); 
       } 

, пожалуйста, помогите мне, я застрял на это от недели и я не найти решение

+0

Пожалуйста, достаточно только кода, необходимого для воспроизведения проблемы. – sjsam

+0

Привет, код java, который я поставил, был моим контроллером весны, и скрипт, который я хочу запустить, доступен здесь: https://github.com/nergdron/dve –

ответ

0

Вы не можете использовать sudo команду в коде Java , Если вам нужно запустить привилегированное приложение root, вам нужно переключиться на root, прежде чем запускать Java-код.

Если вы хотите сделать это со своего кода Java, вам необходимо позвонить setuid. Но я не знаю, вы можете позвонить setuid из кода Java. Для этого вам может понадобиться оболочка C/C++ для переключения на root. Обратите внимание: http://unix.stackexchange.com вопрос для письма обертки.

Смежные вопросы