|
From: Atahualpa L. <ata...@gm...> - 2012-07-09 20:42:46
|
I'm trying to automate something using Perl and Expect.pm using a virtual
serial port on an HP server using ILO3, but somehow when i try to start a
virtual console from Expect created pty, it just freezes there, and doesn't
start, but if i do it manually via ssh then it works, i think it is an
stty/pty issue but i don't know where to start debugging this.
This is a simpler version of what i am doing:
#!/usr/bin/perl
use strict;
use warnings;
use Expect;
my $iloip = "1.2.3.4"; # IP changed to protect the guilty
my $ilouser = "Administrator";
my $ilopswd = "mypass"; #same
my $osuser = "admin";
my $ospassword = "SecurePassword!"; #same
my $expect = Expect->new();
$expect->log_stdout(1); #debug
$expect->exp_internal(1); #debug
$expect->spawn("ssh $ilouser\@$iloip");
$expect->expect(10, "ssword:");
$expect->send("$ilopswd\n");
$expect->expect(10, "iLO->");
$expect->send("vsp\n");
$expect->expect(20, "login:");
.....
After issuing the vsp command, i should get a login prompt ( on the server
there is a console configuration on /etc/inittab using agetty
[co:2345:respawn:/sbin/agetty ttyS0 115200 vt102] ) but nothing happens.
If i do the same commands on a manually initiated ssh session then it works
correctly
Example:
Script output:
[dev@dev-ipdr-01 standalone]$ perl rconsole.pl
Spawned 'ssh Administrator@1.2.3.4'
spawn id(3)
Pid: 27108
Tty: /dev/pts/0
at /usr/share/perl5/vendor_perl/Expect.pm line 181
Expect::spawn('Expect=GLOB(0x19ad360)', 'ssh Administrator@1.2.3.4') called
at rconsole.pl line 15
Starting EXPECT pattern matching...
at /usr/share/perl5/vendor_perl/Expect.pm line 561
Expect::expect('Expect=GLOB(0x19ad360)', 10, 'ssword:') called at
rconsole.pl line 16
spawn id(3): list of patterns:
#1: -ex `ssword:'
spawn id(3): Does `'
match:
pattern #1: -ex `ssword:'? No.
Administrator@1.2.3.4's password:
spawn id(3): Does `Administrator@1.2.3.4\'s password: '
match:
pattern #1: -ex `ssword:'? YES!!
Before match string: `Administrator@1.2.3.4\'s pa'
Match string: `ssword:'
After match string: ` '
Matchlist: ()
Sending 'mypass\n' to spawn id(3)
at /usr/share/perl5/vendor_perl/Expect.pm line 1264
Expect::print('Expect=GLOB(0x19ad360)', 'mypass!\x{a}') called at
rconsole.pl line 17
Starting EXPECT pattern matching...
at /usr/share/perl5/vendor_perl/Expect.pm line 561
Expect::expect('Expect=GLOB(0x19ad360)', 10, 'iLO->') called at
rconsole.plline 18
spawn id(3): list of patterns:
#1: -ex `iLO->'
spawn id(3): Does ` '
match:
pattern #1: -ex `iLO->'? No.
spawn id(3): Does ` \r\n'
match:
pattern #1: -ex `iLO->'? No.
User:Administrator logged-in to
spawn id(3): Does ` \r\nUser:Administrator logged-in to '
match:
pattern #1: -ex `iLO->'? No.
ilo1.solutions.net(1.2.3.4)
iLO 3 Advanced 1.28 at Jan 13 2012
Server Name: FOOBAR
Server Power: On
</>hpiLO->
spawn id(3): Does ` \r\nUser:Administrator logged-in to
ilo1.solutions.net(1.2.3.4)\r\niLO
3 Advanced 1.28 at Jan 13 2012\r\nServer Name: FOOBAR\r\nServer Power:
On\r\n\n</>hpiLO-> '
match:
pattern #1: -ex `iLO->'? YES!!
Before match string: ` \r\nUser:Administrator logged-in to
ilo1.solutions.net(1.2.3.4)\r\niLO 3 Advanced 1.28 at Jan 13
2012\r\nServer Name: FOOBAR\r\nServer Power: On\r\n\n</>hp'
Match string: `iLO->'
After match string: ` '
Matchlist: ()
Sending 'vsp\n' to spawn id(3)
at /usr/share/perl5/vendor_perl/Expect.pm line 1264
Expect::print('Expect=GLOB(0x19ad360)', 'vsp\x{a}') called at rconsole.plline 19
Starting EXPECT pattern matching...
at /usr/share/perl5/vendor_perl/Expect.pm line 561
Expect::expect('Expect=GLOB(0x19ad360)', 20, 'login:') called at
rconsole.plline 20
spawn id(3): list of patterns:
#1: -ex `login:'
spawn id(3): Does ` '
match:
pattern #1: -ex `login:'? No.
vsp
spawn id(3): Does ` vsp\n'
match:
pattern #1: -ex `login:'? No.
[dev@dev-ipdr-01 standalone]$
Now this is the output of a manual ssh connection:
dev@dev-ipdr-01 standalone]$ ssh Administrator@1.2.3.4
Administrator@10.2.3.4's password:
User:Administrator logged-in to ilo1.solutions.net(1.2.3.4)
iLO 3 Advanced 1.28 at Jan 13 2012
Server Name: FOOBAR
Server Power: On
</>hpiLO-> vsp
Virtual Serial Port Active: COM1
Starting virtual serial port.
Press 'ESC (' to return to the CLI Session.
foobar.foo.myboxen.lan login:
-END-
I tried to see the stty options on the ssh connection's pty and the Expect
spawn'ed pty:
SSH PTY:
[dev@dev-ipdr-01 ~]$ stty -F /dev/pts/2
speed 38400 baud; line = 0;
eol = M-^?; eol2 = M-^?; lnext = <undef>; min = 1; time = 0;
-icrnl
-icanon -echo
EXPECT IO::Pty PTY:
[dev@dev-ipdr-01 ~]$ stty -F /dev/pts/0
speed 38400 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel
-opost
-isig -icanon -iexten -echo -echoe -echok
How can i debug this? Is there anyway to see if there is something in the
pty settings that ILO is setting up?
--
--------------------------------------------------
Atahualpa Ledesma
Redhat Certified
Engineer<https://www.redhat.com/wapps/training/certification/verify.html?certNumber=111-189-312&verify=Verify>
Oracle Certified Professional 9i
Unix/Linux/Oracle Consultant
ata...@gm...
|