in reply to Executing Linux command remotely from Windows client using SSH2

I use the following code in a script that executes several remote commands to deploy a system:

$self->{ssh} = Net::SSH2->new(); $self->{ssh}->connect($self->{host}) or die <<ERR; Can't open an ssh connection to $self->{host}: $! ERR $self->{ssh}->auth_password($opts{user}, $opts{pass}) or die <<ERR +; Can't login using ssh to $self->{host}: $! ERR ... sub sshSendCommand { my ($self, $cmd, $pollTime) = @_; my $chan = $self->{ssh}->channel(); my $log = ''; my $timeDelta = sprintf "%4d:", time() - $self->{startTime}; $pollTime ||= 500; print "$timeDelta ssh: <$cmd> (poll time: $pollTime)\n"; $chan->exec($cmd); my @poll = {handle => $chan, events => ['in']}; while ($self->{ssh}->poll($pollTime, \@poll)) { if ($poll[0]{revents}{channel_closed}) { print "$timeDelta channel closed\n"; last; } next if !$poll[0]{revents}{in}; my $buff; $log .= $buff while $chan->read($buff, 1024); next; } print "$log\n$timeDelta ssh command complete\n"; return $log; }
True laziness is hard work
  • Comment on Re: Executing Linux command remotely from Windows client using SSH2
  • Download Code

Replies are listed 'Best First'.
Re^2: Executing Linux command remotely from Windows client using SSH2
by Anonymous Monk on Feb 19, 2013 at 06:18 UTC
    Thanks for the code snippet. However this one is making use of Net::SSH2. As mentioned above, I will be executing scripts from Windows client and want to avoid deploying additional Perl modules.
      So, what reply do you expect?

      You can write your own solution from scratch on top of plink which will cost you lots of effort or you can use any of the available modules from CPAN. It is your choice.

      Nobody is going to write the code for you.

        The intention is not to get code snippet or someone else to write code form me. I am just seeking advise from Perl experts, so that I can do things in correct way. As I understand at this point using Net::SSH2 or Net::SSH::Any modules will be the choice.

        Thanks for providing your valuable comments!

        plink do not provide any way or options using that we can skip the host key verification check, so might have to write the expect part for that.