[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: help with simple ssh shell server
[Thread Prev] | [Thread Next]
- Subject: RE: help with simple ssh shell server
- From: "Barbe, Charles" <Charles.Barbe@xxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Fri, 8 Aug 2014 16:49:59 +0000
- To: "libssh@xxxxxxxxxx" <libssh@xxxxxxxxxx>
Thanks for the response Mike! What ended up working for me is not supporting PTY. As soon as I returned -1 in the PTY callback, I got the behavior i wanted! Charles A. Barbe Senior Software Engineer Allworx, a Windstream company 245 East Main St | Rochester NY | 14604 Charles.Barbe@xxxxxxxxxxx | 585.421.5565 ________________________________________ From: Mike Jones [mrjones@xxxxxxxxxx] Sent: Thursday, August 07, 2014 10:44 PM To: libssh@xxxxxxxxxx Subject: Re: help with simple ssh shell server I did something similar and found this to work well enough. buf[0] is the character that was entered. c is the number of characters collected so far on the current input line. cmd[] is where it accumulates what has been typed so far. What it does depends on whether the cursor is currently at the beginning of a line or there is already some text entered. Either way, sending '\b' will just move the cursor. So to get rid of a character, you back up one character, then replace it with a literal space and then back up again so the next character entered will be where you expect it. if ( (buf[0] == 0x7f || buf[0] == CTRL('H')) ) { if ( c > 0 ) { cmd[--c] = 0; // back up, space over the character, then back up again ssh_channel_write(channel, "\b \b", 3); } else // clear any visible character // there is a prompt shown, so we don't allow backing up any farther than that ssh_channel_write(channel, " \b", 2); // fix the client side } Mike Jones On 8/7/2014 1:41 PM, Barbe, Charles wrote: > Hi, > > I am attempting to implement a very simple ssh shell server for use on an embedded platform that has a custom shell. I am able to successfully establish the connection, take in commands and spit out the results. My question though is how does one handle echoing command inputs correctly, particularly with respect to the backspace key. > > Currently, my echoing is just going through my normal stdout - with a "printf("%c", character) as each character is received - which is being written out to the ssh channel. But this does not seem to work with things like the backspace key. > > Am i missing something? > > Thanks for any help you can provide! > > Charles A. Barbe > Senior Software Engineer > Allworx, a Windstream company > 245 East Main St | Rochester NY | 14604 > Charles.Barbe@xxxxxxxxxxx | 585.421.5565 > >
help with simple ssh shell server | "Barbe, Charles" <Charles.Barbe@xxxxxxxxxxx> |
Re: help with simple ssh shell server | Mike Jones <mrjones@xxxxxxxxxx> |