Well, if you're logging in with a password, then ssh wants a pty. If you're using public/private keys, well, ... not sure.
I would look at the Net::SSH or Net::SSH::Perl modules, or use the "expect" command instead. Also this is a Perl6 list which is related to Perl 5 but not the same- you may want to ask follow up questions on PerlMonks or StackOverflow. -y On Sun, Aug 25, 2019 at 2:16 AM Mario Galindez < mario.bidon.galin...@gmail.com> wrote: > Folks, > > I need to execute a program in a remote machine, that takes its input from > STDIN. > > I created a user in such remote machine, and set my program as the shell > for that account (so I don't need to provide shell access). > > On my local node, I have this program: > > #!/usr/bin/perl > > use IPC::Open3; > use POSIX; > > > $inputfile= $ARGV[0]; > open(FILE, '<', "$ARGV[0]") or die $!; > $command= "ssh user\@remotehost.com"; > $pid = open3('<&FILE', '>&STDOUT', '>&STDERR', $command); > > waitpid( $pid, 0 ); > > > What I expect is that I pass the name of the file as arguments of this > program ($ARGV[0]), and the contents of this file is fed as STDIN of the > child I've spawn with open3. This should be received as STDIN of my remote > program, and the results of the remote program would be printed on STDOUT. > > This works well. However, my program only reads the first line, and then > terminates. > > If I do a manual test, and do ssh u...@remotehost.com, and type multiple > lines of input, then things work as expected. > > Any clues? > > Thanks! > > -m > > >