[Trilug-ontopic] YAEQ (yet another Expect question)

Greg Brown gwbrown1 at gmail.com
Wed Jan 20 14:35:25 EST 2010


First and foremost, I need to get this script finished and I don't have time
to learn Python but it's on the to-do list.

Ok, that said I'm ssh'ing to a remote server (an IDS sensor, really) and I'm
trying to read back prompts.  Trouble is when you run a setup command the
prompt is going to change each time.  Here's an example of what I'm dealing
with:

#!/usr/bin/perl

use Expect;

$ssh = Expect->spawn("ssh -l greg myserver");

# wait for the prompt
my($which, $why, $match, $before, $after) = $ssh->expect(30,"assword:)";

# send the password
print $ssh "myPassword\r";

# now here's where we run into problems, the prompt is going to change
dynamically and there is no way I can change that
my($which, $why, $match, $before, $after) = $ssh->expect(30,":");

And there is where I run into problems.. the prompt for each system I ssh to
will change dynamically and I want to capture the entire prompt but the
$match variable only catches what it matches, not the entire line so $match
would equal ":" not "gregtest(192.168.15.99):" and I want to be able to
capture that IP address.

What I can't seem to get working is a way to put a regular expression inside
what I want to match, i.e. I can't seem to say:

my($which, $why, $match, $before, $after) = $ssh->expect(30,"greg*:");

That doesn't work.

Any ideas?  I'd really like to get this working.

Back to google.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.trilug.org/pipermail/trilug-ontopic/attachments/20100120/185fab3a/attachment.htm>


More information about the Trilug-ontopic mailing list