uttamgupta commented on issue #658:
URL: https://github.com/apache/mina-sshd/issues/658#issuecomment-2637760010
Thanks for helping. Code below is working now.
public class InteractiveExecCmd {
public static void main(String[] args) throws Exception {
SshClient client = SshClient.setUpDefaultClient();
client.start();
String hostname = "<hostIP>";
String password = "<pwd>";
ConnectFuture cf = client.connect("root", hostname, 22);
ClientSession clientSession = cf.verify().getSession();
clientSession.addPasswordIdentity(password);
clientSession.auth().verify(TimeUnit.SECONDS.toMillis(10));
ChannelExec ce;
try {
ce = clientSession.createExecChannel("bc");
OpenFuture openFuture = ce.open().verify(30, TimeUnit.SECONDS);
Stack<String> cmds = new Stack<>();
cmds.add("`");
cmds.add("723+323");
cmds.add("734334*23343434");
// Create a new thread to handle input
OutputStream stdin = ce.getInvertedIn();
Thread t1 = new Thread(() -> {
// Code to be executed in the new thread
try {
while (!cmds.empty()) {
String cmd = cmds.pop();
stdin.write((cmd + "\n").getBytes());
stdin.flush(); // Flush the input to ensure it's sent
System.out.println("Sent: " + cmd);
}
stdin.write("quit\n".getBytes()); // Exit the bc session
when done
stdin.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
});
t1.start();
// Capture and print the output from bc
InputStream outputStream = ce.getInvertedOut();
InputStream errorStream = ce.getInvertedErr();
BufferedReader reader = new BufferedReader(new
InputStreamReader(outputStream));
String line;
if (outputStream != null) {
// Read output from bc
while ((line = reader.readLine()) != null) {
System.out.println("bc output: " + line);
}
}
if (errorStream != null) {
BufferedReader errorReader = new BufferedReader(new
InputStreamReader(errorStream));
// Read error from bc
while ((line = errorReader.readLine()) != null) {
System.out.println("bc error: " + line);
}
}
Set<ClientChannelEvent> events =
ce.waitFor(EnumSet.of(ClientChannelEvent.CLOSED),
TimeUnit.SECONDS.toMillis(2));
t1.join();
} catch (IOException e) {
throw new SshClientException("Failed to execute command", e);
} finally {
try {
clientSession.close();
} catch (IOException e) {
System.out.println("Got exception while closing session");
e.printStackTrace();
}
}
}
}
Output:
Sent: 734334*23343434
Sent: 723+323
Sent: `
bc output: 17141877262956
bc output: 1046
bc error: (standard_in) 3: illegal character: `
Process finished with exit code 0
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]