Front page | perl.beginners |
Postings from January 2012
Re: Net::Openssh and sudo? made some progress: version 3
Thread Previous
|
Thread Next
From:
Rajeev Prasad
Date:
January 20, 2012 14:26
Subject:
Re: Net::Openssh and sudo? made some progress: version 3
Message ID:
1327098397.94530.YahooMailNeo@web114204.mail.gq1.yahoo.com
following is working but it keep running the ls -l in loop, i have to ctrl+C it !!!!
#!/usr/bin/perl
# see http://perlmonks.org/?node_id=890441
use strict;
use warnings;
use Net::OpenSSH;
use Expect;
$Expect::Exp_Internal = 1;
@ARGV == 2 or die <<EOU;
Usage:
$0 host user_passwd
EOU
my $host = $ARGV[0];
my $pass1 = $ARGV[1];
my $ssh = Net::OpenSSH->new($host, passwd => $pass1);
$ssh->error and die "unable to connect to remote host: " . $ssh->error;
#$ssh->system("sudo -k");
my ( $pty, $pid ) = $ssh->open2pty({stderr_to_stdout => 1}, '/usr/local/bin/sudo', -p => 'runasroot:', 'su', '-')
or return "failed to attempt su: $!\n";
my $expect = Expect->init($pty);
$expect->log_file("expect.pm_log", "w");
$expect->expect(2,
[ qr/runasroot:/ => sub { shift->send("$pass1\n"); exp_continue;} ], #use pass2 if using only su
[ qr/Sorry/ => sub { die "Login failed" } ],
[qr/#/ => sub { shift->send("ls -l\n"); exp_continue;}]
) or die "___Timeout!";
__END__
________________________________
From: Rajeev Prasad <rp.neuli@yahoo.com>
To: perl list <beginners@perl.org>
Sent: Friday, January 20, 2012 4:14 PM
Subject: Re: Net::Openssh and sudo?
found following which is working to the point where i can get to the root prompt, but not sure why any command after that is not working???? can anyone give any hint? thank you.
CODE:
#!/usr/bin/perl
# see http://perlmonks.org/?node_id=890441
use strict;
use warnings;
use Net::OpenSSH;
use Expect;
#$Expect::Exp_Internal = 1;
@ARGV == 2 or die <<EOU;
Usage:
$0 host user_passwd
EOU
my $host = $ARGV[0];
my $pass1 = $ARGV[1];
my $ssh = Net::OpenSSH->new($host, passwd => $pass1);
$ssh->error and die "unable to connect to remote host: " . $ssh->error;
#$ssh->system("sudo -k");
my ( $pty, $pid ) = $ssh->open2pty({stderr_to_stdout => 1}, '/usr/local/bin/sudo', -p => 'runasroot:', 'su', '-')
or return "failed to attempt su: $!\n";
my $expect = Expect->init($pty);
$expect->log_file("expect.pm_log", "w");
$expect->expect(2,
[ qr/runasroot:/ => sub { shift->send("$pass1\n");} ], #use pass2 if using only su
[ qr/Sorry/ => sub { die "Login failed" } ]);
$expect->send("\n\n\n");
$expect->expect(2,[ qr/#/ => sub { shift->send("ls -l\n");} ]) #use pass2 if using only su
in above the ls command is not working.... if i do exp interactive that works fine....
________________________________
From: Rajeev Prasad <rp.neuli@yahoo.com>
To: perl list <beginners@perl.org>
Sent: Friday, January 20, 2012 1:10 PM
Subject: Net::Openssh and sudo?
hello,
using Net::Openssh how can i use sudo to become some other user (say root) on a target machine and then execute a series of commands as root?
i looked and tried to use the expect example given on Net::Openssh page but could not make it to work.
my $myssh = Net::OpenSSH->new($host,
port => $SSHPORT,
user => $USER,
password => $PASS,)
now how can i execute a sudo on this, thus becoming a different user and, then execute bunch of commands on this handle?
please advice.
thank you.
Rajeev
--
To unsubscribe, e-mail: beginners-unsubscribe@perl.org
For additional commands, e-mail: beginners-help@perl.org
http://learn.perl.org/
Thread Previous
|
Thread Next