2016-07-26 24 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(); 
       } 

は私が週からこの上で立ち往生しています私を助けてくださいと私はあなたがJavaコードでsudoコマンドを使用することはできません

+0

問題を再現するのに必要なコードは、ここで必要な部分のみを入力してください。 – sjsam

+0

こんにちは、私は入れたJavaコードは私の春のコントローラと私が実行したいスクリプトはここで利用可能です:https://github.com/nergdron/dve –

答えて

0

解決策が見つからない:

は、これは私のJavaコードであります。 root特権アプリケーションを実行する必要がある場合は、Javaコードを実行する前にrootに切り替える必要があります。

Javaコードから実行する場合は、setuidに電話する必要があります。しかし、私はあなたがJavaコードからsetuidを呼び出すことができるか分からない。そのためには、ルートに切り替えるためのC/C++ラッパーが必要な場合があります。ラッパーについては、http://unix.stackexchange.comの質問を参照してください。

関連する問題