0
JSchライブラリを使用してプログラムを作成していて、shell
チャネルを開いて、String
に格納されているコマンドを実行する必要があります。
コンソールよりもString変数から入力コマンドを入力する必要があります。
私は、与えられたコードでJsch : Command Output unavailable
ポストを越えpwd
、whoami
などのようなコマンドのためにその作業罰金を来ているが、私は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();
}