http://qs321.pair.com?node_id=1086849

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks

I am trying to SSH into a remote machine and execute a shell script. So far I can access the machine and I can run basic administrative commands such as, pwd, ls ,df -h, but when I attempt to use sh, perl, or any of the SGE commands (qsub, qstat) my script fails. Ideally I want to use the SGE commands directly, but I would be happy if I can get a shell script to run and thereby accomplish what I need to do (check status of a job and hopefully one day actually submit a job). Any help is greatly appreciated.

Below is my existing script:

use warnings; use strict; use Perl::Critic; use Net::SSH::Perl; use Net::SSH::Perl::Key::RSA; use Class::ErrorHandler; my $server="400.800.400.800"; #not a real IP address my $port="22"; my $username="snoopy"; #my $command="df -h"; #this worked #my $command="ls"; #this worked #my $command="sh status.sh"; #Received error Use of uninitialized valu +e $stdout in string at ssh.pl #my $command="/usr/bin/sh status.sh"; #Received error Use of uninitial +ized value $stdout in string at ssh.pl #my $command="qstat"; #Received error Use of uninitialized value $stdo +ut in string at ssh.pl line my $command="pwd"; #this worked my $ssh = Net::SSH::Perl->new("$server", protocol=> 2, port=>"$port", +identity_files=>["/location/of/my/identity/files/file"]); $ssh->login($username); my($stdout, $stderr, $exit) = $ssh->cmd("$command"); print "$stdout";