BUG?: Assigning a Perl script as user shell + sending commands on ssh connect

Darren Tucker dtucker at zip.com.au
Fri Jul 27 09:56:13 EST 2007

On Thu, Jul 26, 2007 at 06:30:03PM -0400, Brandon Simmons wrote:
> Hi,
> This is sort of a strange issue. But I am experimenting with ways to
> have a user log in and be presented with a perl script to interact
> with. When I do either or both of the following:
>      1) set the user's shell to /usr/bin/myperlscript
>      2) specify ForceCommand /usr/bin/myperlscript, applied to my user
> ...I get strange behavior when a command is appended to the client
> connect command in this way:
>      ssh -l user ls /etc
> The output from the perl script is not printed immediately but waits
> for a carriage return from the user before it is printed to the
> screen> Here is an example using a test perl script:
> You can see that what I type is taken as <STDIN> by the script, so I
> guess the output is stuck in a buffer somewhere. not sure if this is a
> bug in OpenSSH or a perl oddity. Or maybe I really shouldn't be
> setting my user's shell to be a script.

Try setting stdin/out to unbuffered in your perl script:

	select STDERR; $| = 1;
	select STDOUT; $| = 1;

Darren Tucker (dtucker at zip.com.au)
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4  37C9 C982 80C7 8FF4 FA69
    Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.

More information about the openssh-unix-dev mailing list