2017-01-16 9 views
2

た後、私はsudoコマンドを実行するためのコードの下に実行しようとしているが、私はsudoログイン実行するコマンドはsudoログイン

String[] commands = {"sudo su - myname;","id"}; 
JSch jsch = new JSch(); 
String username = "myuser"; 
com.jcraft.jsch.Session session = 
     jsch.getSession(username,"hostname", 22); 
session.setPassword("[email protected]"); 
session.connect(); 
Channel channel=session.openChannel("exec"); 
for(int a=0;a<=commands.length;a++){ 
    ((ChannelExec)channel).setCommand("sudo su - myname;"); 
    ((ChannelExec)channel).setErrStream(System.err); 
    ((ChannelExec) channel).setPty(true); 
    channel.connect(); 
    System.out.println("id *******"); 
    OutputStream out=channel.getOutputStream(); 
    out.write(("[email protected]\n").getBytes()); 
    out.flush(); 
    InputStream in=channel.getInputStream(); 
    byte[] tmp=new byte[1024]; 
    while(true){ 
     while(in.available()>0){ 
      int i=in.read(tmp, 0, 1024); 
      if(i<0)break; 
      System.out.print(new String(tmp, 0, i)); 
     } 
     if(channel.isClosed()){ 
      System.out.println("exit-status: "+channel.getExitStatus()); 
      break; 
     } 
    } 
} 
+0

あなたのコードでコメントを実行しようとする試みはありません。それで問題は何ですか? –

+0

こんにちはそれは問題です..私はsudoのログイン後にコマンドを渡す方法がわからない。 – Srinivas

答えて

0

sudo suが新しいシェルを実行した後にコマンドを実行する方法がわかりません。シェルにコマンドを提供するために、

あなたのいずれか:

((ChannelExec)channel).setCommand("sudo -S -p '' "+command); 
  • またはシェルにコマンドを養う:

    一般的には、より明確に定義されたAPI(コマンドライン引数)を使用するため、最初のアプローチをお勧めします。

  • +0

    私は同じものを追加しましたが、コマンドでの印刷は行いますが、アクション/出力はしません。 – Srinivas

    +0

    * *「同じ」*私は2つのアプローチを提案しました。あなたはどちらを使いましたか?私は最初のものをお勧めします。 –

    +0

    OutputStream out = channel.getOutputStream(); \t \t out.write(( "id \ n")。getBytes()); \t \t out.flush();私はこのアプローチを使用しました – Srinivas

    関連する問題