Try to look at Net::SSH::Any https://metacpan.org/pod/Net::SSH::Any
On 2/14/18 5:32 AM, Lancelot Mak wrote:
do u have any recommendation on module to use? what i wanted is to
login ssh using username,password but in script
no key, no non-interactive
thanks
On 13 February 2018 at 23:38, Chas. Owens <chas.ow...@gmail.com
<mailto:chas.ow...@gmail.com>> wrote:
On Tue, Feb 13, 2018 at 1:19 AM Lancelot Mak
<lancelot....@computer.org <mailto:lancelot....@computer.org>> wrote:
#!/usr/bin/perl -W
use SSH::Command;
$cmdln = `grep $ARGV[0] list.txt`;
chomp($cmdln);
($cmdhost,$user,$pass) = split(':',$cmdln);
$p = `echo $pass|base64 -d`;
chomp($p);
$cmdlog = ssh_execute(
host => $cmdhost,
username => $user,
password => $p,, i
command => "$ARGV[1]",
);
print $cmdlog;
print "\n";
Testing on a Mac OS machine, the I found it consistently prints
out 8192 characters. This should be immediately recognizable as a
magic number (8k or 2**13). This tells me that SSH::Command (or
the underlying libssh2 library) has an 8k buffer and once it is
full, it no longer returns any data. Looking at the code for
SSH::Command, I see the following function:
# Execute command and get answer as text
sub execute_command_and_get_answer {
my ($ssh2, $command) = @_;
my $chan = $ssh2->channel();
$chan->exec($command);
$chan->read(my $result, 102400);
chomp $result; # remove \n on string tail
return $result;
}
This looks like a fixed read (albeit a longer one that I expected,
so there is probably a fixed buffer in libssh2 too), so that is
likely the problem. Changing the function to read until an end of
file is detected:
sub execute_command_and_get_answer {
my ($ssh2, $command) = @_;
my $chan = $ssh2->channel();
$chan->exec($command);
my $result = "";
until ($chan->eof) {
$chan->read(my $buf, 4_096);
$result .= $buf;
}
chomp $result; # remove \n on string tail
return $result;
}
seems to fix the problem. I am filling a bug against the module,
but given that the last release was in 2009 and the most current
version is less than 1.0 (0.7), you may want to find a different
module to use.
--
Lancelot Mak
----------------------------------------------------------------
http://facebook.com/honey.mak
Used to compete
Lord to complete
從前輸贏在心頭
如今一切在主手
Amen