in reply to Re^2: Net::SSH::Perl script in windows - getpwuid is unimplemented
in thread Net::SSH::Perl script in windows - getpwuid is unimplemented

You didn't use Net::SSH::Win32Perl. Look a little closer at the error. The getpwuid function isn't implemented. That means don't try to run getpwuid. Try $ENV{USERNAME} instead.

Replies are listed 'Best First'.
Re^4: Net::SSH::Perl script in windows - getpwuid is unimplemented
by sthirumalai (Novice) on Feb 25, 2010 at 23:54 UTC
    is that required to use in cygwin environment. also im not calling getpwuid function. here is my code
    use strict; use warnings; use Net::SSH::W32Perl; my $host = 'host'; my $pass = 'pwd'; my $user = 'userid'; my $cmd = 'command'; my $ssh = new Net::SSH::W32Perl( $host, debug => 1, protocol => 2 ); $ssh->login($user, $pass); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); print $stdout, "\n";
    I am running this script in windows activestate perl environment. the script trace is
    Reading configuration data /.ssh/config Reading configuration data /etc/ssh_config Connecting to <hostname>, port 22. Socket created, turning on blocking... Remote protocol version 2.0, remote software version OpenSSH_5.2 Net::SSH::Perl Version 1.34, protocol version 2.0. The getpwuid function is unimplemented at C:/Perl/site/lib/Net/SSH/Per +l/SSH2.pm line 39, <GEN0> line 1.
      I have fixed this problem on windows, I have defined a enviroment variable HOME.
        could you explain how did you set it? You mean you have set the Windows Home variable, but with what path?
      Cygwin implements getpwuid. If you are using ActiveState, which doesn't implement getpwuid, then you'll probably have to go into the source at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm with your editor and change sub _proto_init to this
      sub _proto_init { my $ssh = shift; my $home = $ENV{HOME} || $ENV{USERNAME}; unless ($ssh->{config}->get('user_known_hosts')) { defined $home or croak "Cannot determine home directory, pleas +e set the environment variable HOME"; $ssh->{config}->set('user_known_hosts', "$home/.ssh/known_host +s2"); }
      my $home should read:
      my $home = $ENV{HOME} || $ENV{USERNAME};