Dear monks,
I am writing a script to check the installed perl modules and its versions in different remote systems. I am using 'Net::SSH::Expect' module for executing the command in remote systems. The following is the sample code.
#!/usr/bin/perl
use Net::SSH::Expect;
my $host = "testserver";
my $user = "test";
my $password = "pass";
my $ssh = Net::SSH::Expect->new (
host => $host,
password=> $password,
user => $user,
raw_pty => 1,
timeout => 10
);
my $login_output = $ssh->login();
my $cmd = qq(perl -e 'use ExtUtils::Installed; my ($inst) = ExtUtils::
+Installed->new(); my (@modules) = $inst->modules(); map { print $_ .
+":" . $inst->version($_) ."\n"; }@modules;');
my $res = $ssh->exec($cmd);
print($res);
$ssh->close();
While executing the command, i'm getting the following error
>new(); my () = ->modules(); map { print . ":" . ->version() ."
> "; };'
Can't declare stub in "my" at -e line 1, near ") ="
syntax error at -e line 1, near "= ->modules"
syntax error at -e line 1, near ". ->version"
syntax error at -e line 2, near "};"
(Might be a runaway multi-line "" string starting on line 1)
Execution of -e aborted due to compilation errors.
If I execute the command manually in remote server using SSH client, i'm getting the output.
Can someone throw some light on this.
-lamp