<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EstiloCorreo17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.EstiloCorreo18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=ES link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal>Hello group;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>We’ve some problems working with RANCID and Radware AppDirector Switches. I am working with rlogin-addon and rrancid-addon to get the switch conf, and is very strange because running the command:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$> bin/rlogin-addon -t 90 -c"system config immediate" imi-br-gl-1 <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The RANBCID can connect and get the configuration without problems, if I run:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>$> bin/rrancid-addon -d imi-br-gl-1<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I get the following output:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>executing rlogin-addon -t 90 -c"system config immediate" imi-br-gl-1<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>HIT COMMAND:AppDirector#system config immediate<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    In SystemConfigImmediate: AppDirector#system config immediate<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Connection closed by foreign host.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>But </span><span lang=EN-US> in the host_file.new file I’ve the Radware configuration but in the SVN the configuration is not upload, in the logfile for this group when I run rancid-run -f /usr/local/rancid/etc/rancid.conf -r imi-br-gl-1 show:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Trying to get all of the configs.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Connection closed by foreign host.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>=====================================<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Getting missed routers: round 1.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Connection closed by foreign host.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>=====================================<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Getting missed routers: round 2.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Connection closed by foreign host.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>=====================================<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Getting missed routers: round 3.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Connection closed by foreign host.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>=====================================<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Getting missed routers: round 4.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>imi-br-gl-1: End of run not found<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Connection closed by foreign host.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I was looking for answer  in the Internet to this issue but I don’t have answers, anyone with experience in this kind of vendor can help me.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The perl script for RANCID that I am using are:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>use Getopt::Std;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>getopts('dflV');<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>if ($opt_V) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    print "rancid 2.3.6\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    exit(0);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$log = $opt_l;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$debug = $opt_d;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$file = $opt_f;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$host = $ARGV[0];<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$clean_run = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$found_end = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$prompt = "#";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$timeo = 90;                            <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>my(@commandtable, %commands, @commands);# command lists<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>my($aclsort) = ("ipsort");              # ACL sorting mode<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>my($filter_commstr);                    # SNMP community string filtering<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>my($filter_pwds);                       # password filtering mode<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#my $hist_tag="";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#my $command="";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># This routine is used to print out the router configuration<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub ProcessHistory {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    my($new_hist_tag,$new_command,$command_string,@string) = (@_);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if ((($new_hist_tag ne $hist_tag) || ($new_command ne $command))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        && scalar(%history)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print eval "$command \%history";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        undef %history;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if (($new_hist_tag) && ($new_command) && ($command_string)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if ($history{$command_string}) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            $history{$command_string} = "$history{$command_string}@string";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        } else {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            $history{$command_string} = "@string";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    } elsif (($new_hist_tag) && ($new_command)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $history{++$#history} = "@string";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    } else {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print "@string";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    $hist_tag = $new_hist_tag;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    $command = $new_command;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    1;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>sub numerically { $a <=> $b; }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># This is a sort routine that will sort numerically on the<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># keys of a hash as if it were a normal array.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub keynsort {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(%lines) = @_;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local($i) = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(@sorted_lines);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    foreach $key (sort numerically keys(%lines)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $sorted_lines[$i] = $lines{$key};<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $i++;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    @sorted_lines;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># This is a sort routine that will sort on the<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># keys of a hash as if it were a normal array.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub keysort {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(%lines) = @_;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local($i) = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(@sorted_lines);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    foreach $key (sort keys(%lines)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $sorted_lines[$i] = $lines{$key};<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $i++;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    @sorted_lines;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># This is a sort routine that will sort on the<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># values of a hash as if it were a normal array.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub valsort{<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(%lines) = @_;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local($i) = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(@sorted_lines);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    foreach $key (sort values %lines) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $sorted_lines[$i] = $key;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $i++;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    @sorted_lines;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># This is a numerical sort routine (ascending).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub numsort {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(%lines) = @_;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local($i) = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(@sorted_lines);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    foreach $num (sort {$a <=> $b} keys %lines) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $sorted_lines[$i] = $lines{$num};<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $i++;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    @sorted_lines;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># This is a sort routine that will sort on the<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># ip address when the ip address is anywhere in<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># the strings.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub ipsort {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(%lines) = @_;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local($i) = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    local(@sorted_lines);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    foreach $addr (sort sortbyipaddr keys %lines) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $sorted_lines[$i] = $lines{$addr};<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $i++;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    @sorted_lines;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># These two routines will sort based upon IP addresses<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub ipaddrval {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    my(@a) = ($_[0] =~ m#^(\d+)\.(\d+)\.(\d+)\.(\d+)$#);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    $a[3] + 256 * ($a[2] + 256 * ($a[1] +256 * $a[0]));<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub sortbyipaddr {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    &ipaddrval($a) <=> &ipaddrval($b);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># This routine processes a "system config immediate"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub SystemConfigImmediate{<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    print STDERR "    In SystemConfigImmediate: $_" if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    my($lineauto,$comment,$linecnt) = (0,0,0);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>    while (<INPUT>) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        tr/\015//d;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        last if(/^$prompt/);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        return(0) if ($found_end);              # Only do this routine once<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        s/^!File Signature: .*$/!$1 <removed>/;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        s/^!Date:.*\s*//;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        #s/^(manage radius server-secret set) .*$/!$1 <removed>/;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        #s/^(manage user table create ).* (-pw ).*$/!$1<removed> $2<removed>/;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    ProcessHistory("CONFIG","","","$_");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>    $found_end = 1;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    return(0);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># dummy function<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>sub DoNothing {print STDOUT;}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># Main<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>@commandtable = (<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        {'system config immediate'              => 'SystemConfigImmediate'},<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># Use an array to preserve the order of the commands and a hash for mapping<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># commands to the subroutine and track commands that have been completed.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>@commands = map(keys(%$_), @commandtable);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>%commands = map(%$_, @commandtable);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>$cisco_cmds=join(";",@commands);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$cmds_regexp=join("|",@commands);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>if (length($host) == 0) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if ($file) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print(STDERR "Too few arguments: file name required\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        exit(1);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    } else {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print(STDERR "Too few arguments: host name required\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>       exit(1);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>open(OUTPUT,">$host.new") || die "Can't open $host.new for writing: $!\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>select(OUTPUT);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># make OUTPUT unbuffered if debugging<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>if ($debug) { $| = 1; }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>if ($file) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    print STDERR "opening file $host\n" if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    print STDOUT "opening file $host\n" if ($log);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    open(INPUT,"<$host") || die "open failed for $host: $!\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>} else {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    print STDERR "executing rlogin-addon -t $timeo -c\"$cisco_cmds\" $host\n" if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    print STDOUT "executing rlogin-addon -t $timeo -c\"$cisco_cmds\" $host\n" if ($log);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if (defined($ENV{NOPIPE})) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        system "rlogin-addon -t $timeo -c \"$cisco_cmds\" $host </dev/null > $host.raw 2>&1" || die "rlogin-addon failed for $host:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>$!\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        open(INPUT, "< $host.raw") || die "clogin failed for $host: $!\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    } else {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        open(INPUT,"rlogin-addon -t $timeo -c \"$cisco_cmds\" $host </dev/null |") || die "clogin failed for $host: $!\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># determine password filtering mode<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#if ($ENV{"FILTER_PWDS"} =~ /no/i) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#    $filter_pwds = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#} elsif ($ENV{"FILTER_PWDS"} =~ /all/i) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#    $filter_pwds = 2;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#} else {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    $filter_pwds = 1;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>ProcessHistory("","","","!RANCID-CONTENT-TYPE: radware\n!\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ProcessHistory("COMMENTS","keysort","B0","!\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ProcessHistory("COMMENTS","keysort","D0","!\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ProcessHistory("COMMENTS","keysort","F0","!\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ProcessHistory("COMMENTS","keysort","G0","!\n");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>TOP: while(<INPUT>) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>    tr/\015//d;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if (/[>#]\s?logout$/) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $clean_run=1;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        last;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if (/^Error:/) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print STDOUT ("$host clogin error: $_");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print STDERR ("$host clogin error: $_") if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $clean_run=0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        last;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    while (/#\s*($cmds_regexp)\s*$/) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $cmd = $1;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if (!defined($prompt)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            $prompt = ($_ =~ /^([^#]+#)/)[0];<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            $prompt =~ s/([][}{)(<a href="file:///\\])\$1\g">\\])/\\$1/g</a>;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            print STDERR ("PROMPT MATCH: $prompt\n") if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print STDERR ("HIT COMMAND:$_") if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if (! defined($commands{$cmd})) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            print STDERR "$host: found unexpected command - \"$cmd\"\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            $clean_run = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            last TOP;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        $rval = &{$commands{$cmd}};<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        delete($commands{$cmd});<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        if ($rval == -1) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            $clean_run = 0;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>            last TOP;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>print STDOUT "Done $logincmd: $_\n" if ($log);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># Flush History<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>ProcessHistory("","","","");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US># Cleanup<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>close(INPUT);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>close(OUTPUT);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>if (defined($ENV{NOPIPE})) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    unlink("$host.raw") if (! $debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US># check for completeness<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>if (scalar(%commands) || !$clean_run || !$found_end) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if (scalar(%commands)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        printf(STDOUT "$host: missed cmd(s): %s\n", join(',', keys(%commands)));<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        printf(STDERR "$host: missed cmd(s): %s\n", join(',', keys(%commands))) if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    if (!$clean_run || !$found_end) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print STDOUT "$host: End of run not found\n";<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        print STDERR "$host: End of run not found\n" if ($debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>        system("/usr/bin/tail -1 $host.new");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>    unlink "$host.new" if (! $debug);<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Thanks in advance for your time and support<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Best Regards<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Victor<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width="83%" style='width:83.68%;background:white;border:none;border-top:solid white 6.0pt'><thead><tr><td colspan=4 valign=top style='border:none;border-bottom:solid white 6.0pt;padding:0cm 0cm 0cm 0cm'></td></tr></thead><tr><td valign=top style='border:none;border-bottom:dotted #009EE0 1.0pt;padding:0cm 0cm 0cm 0cm'></td><td style='border:none;padding:0cm 0cm 0cm 0cm'></td><td style='border:none;padding:0cm 0cm 0cm 0cm'></td><td style='border:none;padding:0cm 0cm 0cm 0cm'></td></tr><tr><td colspan=4 style='border:none;border-top:solid white 6.0pt;padding:0cm 0cm 0cm 0cm'></td></tr></table><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>