The base issues are that we are moving to ssh from telnet, but not all at once and my boss refuses to make major changes. So, I've been tasked to implement expect like things without using expect. What I'm after is something like:
send command
read response
send another command
The devices being examined give different prompts or responses, depending on firmware or vendor. Therefore there are different follow-up commands.
The following does work, but note the comments about
#!/opt/csw/bin/perl
use strict;
use warnings;
use Net::SSH2;
my $host = "<host name or IP>"
my $user = "<user ID>";
my $pass = "<user password>";
my $ssh2 = Net::SSH2->new();
my $ok = 1;
print "==> $host\n";
$ssh2->connect($host) or $ok = 0;
if (!$ok) {
print "Probable telnet\n";
exit(1);
}
if (!$ssh2->auth_password ($user,$pass)) {
print "==> 4 pass fail\n";
exit(1);
}
my $chan2 = $ssh2->channel();
$chan2 -> shell();
# form some reason the order of the commands matters.
# change any one and the prints are blank
print $chan2 "dir\n";
sleep (1); # for some reason the sleep is needed to get output
print "LINE : $_" while <$chan2>;
print $chan2 "sh ver\n\n";
print "LINE : $_" while <$chan2>;
print $chan2 "sh clock\n\n";
print "LINE : $_" while <$chan2>;
print $chan2 "exit\n";
print "==> END\n"
Paradise: Florida, full tank of gas, no appointments.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|