You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by Oskar Z <os...@yahoo.com.INVALID> on 2020/10/26 22:27:56 UTC

Re: SSHD Custom ShellFactory

Let me see if I could put some more details around this.

So I have two problems. I think they are around PtyModes.

1. The carriage return is not honored no matter what I options I use. I’m just simply trying to get it to work in Mac/Linux environment. Unless I specifically add \r\n it does not want to work.
2. When I type in a regular SSH session, I see characters as I type them. In Apache SSHD, I don’t see my input, but once I enter, it does send it over for execution.

So I have created a custom ShellFactory and Command, that will execute Java code on the input provided in the shell.

  private class CLIShellFactory implements ShellFactory  {

    public Command createShell(ChannelSession channelSession) {
      return new CLIShell();
    }

    private class CLIShell implements Command, Runnable {

At first I was using regular InputStream and OutpuStream, but then I saw some code using TtyFilterInputStream and TtyFilterOutputStream, so I tried to convert my code to use these, and provide PtyModes. But I’m still having issues with it. Also, the TtyFilterOutputStream requires the following for echo to work:

public TtyFilterOutputStream(OutputStream out, TtyFilterInputStream echo, Collection<PtyMode> ttyOptions) {

If I use TtyFilterInputStream echo and set my InputStream, I will get into an infinite loop! So I have set it to null, and removed PtyMode.ECHO, but I do need it.

Any light on what I’m doing wrong here?

Is there a ShellFactory where I can just override one method and execute my custom Java code which will enable me to have proper new lines and carriage returns and echo enabled?

I would really appreciate someone who has experience with this to give me some guidance. I have searched the web and cannot seem to find anything.

I did find this that I think has similar problem, which was old thread:

http://apache-mina.10907.n7.nabble.com/sshd-clients-and-echo-td28501.html <http://apache-mina.10907.n7.nabble.com/sshd-clients-and-echo-td28501.html>

Hope someone can help…

Regards,
Oskar

> On Oct 21, 2020, at 7:13 PM, Oskar Z <os...@yahoo.com> wrote:
> 
> 
> 
>> On Oct 21, 2020, at 3:40 PM, Oskar Z <oskarzn@yahoo.com <ma...@yahoo.com>> wrote:
>> 
>> Hello,
>> 
>> Hope someone can help or point in the right direction.
>> 
>> I have created my custom ShellFactory and Command, and commands get executed fine in-app, but the problem is formatting of output, and I cannot see what I type until I hit “enter” and output is not seen until I use out.flush().
>> 
>> It seems to have some tabs…..
>> 
>> NodeID, TypeName, OperatorActions, Links
>>                                         -----------------------
>>                                                                Types,Types,com.micromuse.response.common.TypeOrgNodeIdentifier#com.micromuse.response.dblayer.TypeOrgNode#9900#Types#Types,Types,
>>                                                                                                                                                                                                  ,Link Types: 
>>                                                                                                                                                                                                               ENDRECORD
>> 
>>         READY
>>              Execution Failed. Check impactserver.log for details.
>>                                                                   READY
>> 				
>> 												READY
>> 																	READY
>> 
>> Thanks,
>> Oskar
>> 
>