2017-12-21 3 views
0

JSchライブラリを使用してプログラムを作成していて、shellチャネルを開いて、Stringに格納されているコマンドを実行する必要があります。
コンソールよりもString変数から入力コマンドを入力する必要があります。
私は、与えられたコードでJsch : Command Output unavailable
ポストを越えpwdwhoamiなどのようなコマンドのためにその作業罰金を来ているが、私はsudo -u hiveuser -iを実行しようとしていたときにそのハングのために行きます。コンソールの代わりに文字列入力を使用してシェルチャネルから複数のコマンドを実行する方法

public static void main(String[] args) throws Exception 
    { 
     JSch jsch = new JSch(); 
     String host = "my.host.server"; 
     String user = "myLoginId"; 
     String pswd = "myPASSword"; 

     Session session=jsch.getSession(user,host, 22); 
     session.setPassword(pswd); 
     session.setConfig("StrictHostKeyChecking", "no"); 
     session.setConfig("PreferredAuthentications","publickey,keyboard-interactive,password"); 
     session.connect(); 
     System.out.println("Connected"); 

     Channel channel = session.openChannel("shell"); 
     OutputStream ops = channel.getOutputStream(); 
     PrintStream ps = new PrintStream(ops); 
     channel.connect(); 
     ps.println("sudo -iu hiveuser"); 
     ps.println(pswd); 
     ps.println("hive"); 
     ps.println("desc table myHiveTable;"); 
     ps.flush(); 
     ps.close(); 

     InputStream in = channel.getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
     System.out.println("Opening..."); 

     String jarOutput; 
     while ((jarOutput = reader.readLine()) != null) 
      System.out.println(jarOutput); 
     reader.close(); 
     channel.disconnect(); 
     session.disconnect(); 

    } 

答えて

0

あなたはパスワードでエコー試みることができる:
ここでは、コードです

echo password | sudo -iu hiveuser --stdin 
関連する問題