#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long qw(GetOptions);
use Expect;
use Net::OpenSSH;
use Log::Log4perl qw(:easy);
#Initializing the log file..
my $log_file = "/tmp/linux_cmd_execute_".$id.".log";
Log::Log4perl->easy_init(
{
level => $INFO,
file => "> $log_file",
}
);
INFO( "expect usage user - $user
host - $host , fuser - $fuser , cmd - $cmd ");
my $start_time = time();
INFO("ssh to the host $host");
my $ssh = Net::OpenSSH->new("$user:$pswd\@$host");
if($ssh->error) {
print "Unable to connect $host " . $ssh->error;
exit;
}
my $expect;
my ( $pty, $pid ) = $ssh->open2pty( { stderr_to_stdout => 1 }, "su
+do su - $fuser" )
or die "Failed to attempt sudo su - $fuser";
$expect = Expect->init($pty);
$expect->exp_internal(1);
$expect->log_file("/tmp/expect.log", "w");
my $before;
my $exit1;
my $output;
my $result = $expect->expect(
undef,
[
"\[\r\n]?\[^\r\n]+\[%#>\$] \$",
sub {
my $self = shift;
INFO("Sending command $cmd");
$self->send("ls \r");
}
]
) or custom_error( "Expect Failed ",$id);
$expect->hard_close();
exit 0;
-----this output i need in a file------
Starting EXPECT pattern matching...
at /usr/local/share/perl5/Expect.pm line 597
Expect::expect('Expect=GLOB(0x2b70d80)', undef, 'ARRAY(0x2b712
+18)') called at /products/backend/mopgenie/expect3.pl line 86
handle id(9): list of patterns:
#1: -re `[\r\n]?[^\r\n]+[%#>$] $'
handle id(9): Does `'
match:
pattern #1: -re `[\r\n]?[^\r\n]+[%#>$] $'? No.
handle id(9): Does `\033]0;user@host:~\007\033[?1034h[user@host ~]$ '
match:
pattern #1: -re `[\r\n]?[^\r\n]+[%#>$] $'? YES!!
Before match string: `'
Match string: `\033]0;user@host:~\007\033[?1034h[user@host ~]$ '
After match string: `'
Matchlist: ()
Calling hook CODE(0x2b70cd8)...
Sending 'ls1;date \r' to handle id(9)
at /usr/local/share/perl5/Expect.pm line 1421
Expect::print('Expect=GLOB(0x2b70d80)', 'ls1;date \x{d}') call
+ed at /products/backend/mopgenie/expect3.pl line 84
main::__ANON__('Expect=GLOB(0x2b70d80)') called at /usr/local/
+share/perl5/Expect.pm line 825
Expect::_multi_expect(undef, undef, 'ARRAY(0x1f52480)') called
+ at /usr/local/share/perl5/Expect.pm line 602
Expect::expect('Expect=GLOB(0x2b70d80)', undef, 'ARRAY(0x2b712
+18)') called at /products/backend/mopgenie/expect3.pl line 86
Starting EXPECT pattern matching...
at /usr/local/share/perl5/Expect.pm line 597
Expect::expect('Expect=GLOB(0x2b70d80)', undef, 'ARRAY(0x2b72a
+40)') called at /products/backend/mopgenie/expect3.pl line 122
handle id(9): list of patterns:
#1: -re `[\r\n]?[^\r\n]+[%#>$] $'
|