in reply to Re^3: shell to perl equivalent
in thread shell to perl equivalent


this is how i ran the program... but i am not able to suceed...
#!/usr/bin/perl sub paranthesis { my @paran = @_; system( 'scp', '/users/myuser/merc/rem_snew.pl', "$remoteuser\@$remoteserver:/users/$remoteuser/tmp/rem_snew2.p +l" ); my $result = `ssh $remoteuser\@$remoteserver perl /users/$remoteuser/tmp/ +rem_snew2.pl`; print "$result\n"; system( 'ssh', "$remoteuser\@$remoteserver", 'rm', "/users/$remoteuser/tmp/rem_snew2.pl" ); } paranthesis(@paran);


this is how i ran it...
perl filename.pl remoteuser remoteserver


this is the error i get

ssh: : Hostname and service name not provided or found lost connection usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec +] [-D port] [-e escape_char] [-F configfile] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p +port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [user@]hostname [command] usage: ssh [-1246AaCfgkMNnqsTtVvXxY] [-b bind_address] [-c cipher_spec +] [-D port] [-e escape_char] [-F configfile] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p +port] [-R [bind_address:]port:host:hostport] [-S ctl_path] [user@]hostname [command]


thanks.

Replies are listed 'Best First'.
Re^5: shell to perl equivalent
by graff (Chancellor) on Feb 18, 2008 at 22:09 UTC
    this is how i ran it...
    perl filename.pl remoteuser remoteserver

    The problem with your script is that you never use the command line args, and nothing is ever assigned to the variables "$remoteuser" and "$remoteserver". Do it like this (assuming that "remoteuser" is an alphanumeric string, and "remoteserver" is alphanumerics with periods):

    #!/usr/bin/perl die "Usage: $0 remoteuser remoteserver\n" unless ( @ARGV == 2 and $ARGV[0] =~ /^\w+$/ and $ARGV[1] =~ /^\w+( +\.\w+)*$/ ); paranthesis( @ARGV ); # This is important sub paranthesis { my ( $remoteuser, $remoteserver ) = @_; # equally important system( 'scp', '/users/myuser/merc/rem_snew.pl', "$remoteuser\@$remoteserver:/users/$remoteuser/tmp/rem_snew2.p +l" ); my $result = `ssh $remoteuser\@$remoteserver perl /users/$remoteuser/tmp/ +rem_snew2.pl`; print "$result\n"; system( 'ssh', "$remoteuser\@$remoteserver", 'rm', "/users/$remoteuser/tmp/rem_snew2.pl" ); }

    Also, you might want to try doing these other two commands first, before running the perl script:

    ping -c 2 remoteserver ssh remoteuser@remoteserver ls -d tmp
    If the ping fails, it means you are using a non-existent host name for "remoteserver"; if the ping succeeds but the ssh fails, it's either because your "remoteuser" name does not match an existing user name on that system, or because the home directory for that user account does not contain a subdirectory called "tmp".

      thanks a lot graff.... absloutely perfect...
Re^5: shell to perl equivalent
by shmem (Chancellor) on Feb 18, 2008 at 21:55 UTC
    The arguments you pass on the command line are in the array @ARGV. Change the call of your paranthesis() sub to
    paranthesis(@ARGV);

    You should begin reading some perl manual pages, e.g. perl, perlsyn, perlrun...

    --shmem

    _($_=" "x(1<<5)."?\n".q·/)Oo.  G°\        /
                                  /\_¯/(q    /
    ----------------------------  \__(m.====·.(_("always off the crowd"))."·
    ");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}