You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "Lyor Goldstein (Jira)" <ji...@apache.org> on 2020/08/28 16:35:00 UTC
[jira] [Commented] (SSHD-1068) ChannelExec not showing the output
[ https://issues.apache.org/jira/browse/SSHD-1068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17186662#comment-17186662 ]
Lyor Goldstein commented on SSHD-1068:
--------------------------------------
You are closing the channel immediately after calling {{channel.open().verify()}} which means you are "killing" it while the +background+ channel data pumper is attempting to work. Look at the way {{executeRemoteCommand}} works (even if you don't want to use it) - it waits for the peer to close the channel:
{code:java}
try (ClientChannel channel = createExecChannel(command)) {
channel.setOut(channelOut);
channel.setErr(channelErr);
channel.open().await();t
Collection<ClientChannelEvent> waitMask = channel.waitFor(REMOTE_COMMAND_WAIT_EVENTS, 0L);
if (waitMask.contains(ClientChannelEvent.TIMEOUT)) {
throw new SocketTimeoutException("Failed to retrieve command result in time: " + command);
}
}
{code}
> ChannelExec not showing the output
> ----------------------------------
>
> Key: SSHD-1068
> URL: https://issues.apache.org/jira/browse/SSHD-1068
> Project: MINA SSHD
> Issue Type: Question
> Affects Versions: 2.5.1
> Reporter: Arpan
> Priority: Minor
>
> I have just started using apache-mina ssh client and ran into a issue where the command output is not printing. Here is the sample code -
> {code:java}
> class LibraryBasicTest {
> private static final String USER = "luser";
> private static final String HOST = "192.168.0.179";
> private static final int PORT = 22;
> private static final long DEFAULT_CONNECT_TIMEOUT = 3L;
> private static final long DEFAULT_AUTH_TIMEOUT = 3L;
> private static final long DEFAULT_EXEC_TIMEOUT = 3L;
> @Test
> void basic_user_pass_ssh_conn_tests() {
> SshClient sshClient = SshClient.setUpDefaultClient();
> sshClient.start();
> ClientSession session = null;
> try {
> session = sshClient.connect(USER, HOST, PORT).verify(DEFAULT_CONNECT_TIMEOUT, TimeUnit.SECONDS)
> .getClientSession();
> session.addPasswordIdentity("P@ssw0rd");
> session.auth().verify(DEFAULT_AUTH_TIMEOUT, TimeUnit.SECONDS);
>
> ChannelExec channel = session.createExecChannel("sleep 2;echo \"Hello World!\" \n");
> channel.setUsePty(true);
> channel.setOut(System.out);
> channel.setErr(System.err);
> channel.open().verify(DEFAULT_EXEC_TIMEOUT, TimeUnit.SECONDS);
> } catch (IOException e) {
> e.printStackTrace();
> } finally {
> if (null != session) {
> try {
> session.close();
> } catch (IOException e) {
> e.printStackTrace();
> }
> }
> }
> sshClient.stop();
> }
> }
> {code}
> What am I missing here ?
> P.S. The below command works though but not planing to use it until it is the only way.
> {code:java}session.executeRemoteCommand("echo \"Hello World!\"");{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org