User Tools

Site Tools


config

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

config [2013/05/22 09:34] (current)
admin created
Line 1: Line 1:
 +==== Netflow using NFSEN ====
 +Instructions adapted from http://​www.packetwatch.net/​documents/​guides/​2010112201.php
 +
 +====install apache====
 +done
 +====Modify apache====
 +/​etc/​httpd/​conf/​httpd.conf copied from doon, only modification searching for '​doon'​ and changing to '​devdoon'​
 +/​etc/​krb5.conf and /​etc/​ldap/​openldap.conf copied across, msktutil set up. 
 +====add a directory to the apache setup====
 +
 +You will need to modify the original configuration file. Add the following. In
 +this example, I set the websites to be stored in an alternate directory. By the
 +way, there is already a group named it which includes an account for the web
 +developers.
 +<file - /​etc/​httpd/​conf.d/​suggestedNFSEN.conf>  ​
 +  DocumentRoot "/​data/​websites/​test/​server"​
 +  ErrorLog syslog
 +  LogFormat "%v:%p %h %l %u %t \"​%r\"​ %>s %b \"​%{Referer}i\"​ \"​%{User-Agent}i\""​ commonvhost
 +  CustomLog "​|/​usr/​bin/​logger"​ commonvhost
 +  ErrorDocument 404 /index.html
 +  NameVirtualHost *:80
 +  NameVirtualHost *:443
 +  <​VirtualHost *:80>
 +          ServerName server.test.com
 +          Redirect / https://​server.test.com/​
 +  </​VirtualHost>​
 +  <​VirtualHost *:443>
 +          ServerName server.test.com
 +          ServerAdmin root@localhost
 +          DocumentRoot /​data/​websites/​test/​server
 +  </​VirtualHost>​
 +</​file>​
 +==== My Version ====
 +<file - /​etc/​httpd/​conf.d/​nfsen.conf>​
 +alias "/​nfsen/"​ "/​var/​www/​nfsen/"​
 +<​Directory "/​var/​www/​nfsen">​
 +    allow from all
 +</​Directory>​
 +</​file>​
 +
 +====Stuff I haven'​t been through yet====
 +
 +  # mkdir -p /​var/​www/​nfsen
 +
 +
 +Create an index file.
 +<file html index.html>​
 +<​html>​
 +<​head>​
 +<​title>​Test:​ Network monitoring</​title>​
 +</​head>​
 +<​body>​
 +<a href="​https://​server.test.com/​nfsen/">​Netflow information - NfSen</​a><​br>​
 +</​body>​
 +</​html>​
 +</​file>​
 +
 +suggested changes to php.ini
 +<file - php.ini>
 +  error_reporting ​ =  E_ALL & ~E_NOTICE
 +  log_errors_max_len = 0
 +  error_log = /​data/​logs/​php/​errors.log
 +</​file>​
 +
 +Install the perl package. The perl version has to be at least 5.6.0.
 +  yum install perl
 +  /​usr/​bin/​perl -v | grep -i built
 +
 +
 +Install the following perl modules.
 +  yum install perl-TimeDate perl-Pod-Escapes perl-Pod-Simple perl-Test-Pod perl-MailTools perl-Socket6
 +  ​
 +  yum install xorg-x11-fonts-Type1
 +  yum install ruby.x86_64
 +
 +
 +Install the rrdtool packages.
 +  yum install libdbi.x86_64 lua mysql-server net-snmp-utils ​
 +  /​sbin/​chkconfig mysqld off
 +
 +  mkdir nfsenBuild
 +  cd ~nfsenBuild/​
 +
 +  wget http://​pkgs.repoforge.org/​rrdtool/​perl-rrdtool-1.4.7-1.el6.rfx.x86_64.rpm
 +  wget http://​pkgs.repoforge.org/​rrdtool/​rrdtool-1.4.7-1.el6.rfx.x86_64.rpm
 +  wget http://​pkgs.repoforge.org/​rrdtool/​rrdtool-devel-1.4.7-1.el6.rfx.x86_64.rpm
 +  rpm -Uvh perl-rrdtool-1.4.7-1.el6.rfx.x86_64.rpm rrdtool-1.4.7-1.el6.rfx.x86_64.rpm rrdtool-devel-1.4.7-1.el6.rfx.x86_64.rpm
 +
 +
 +Download, compile and install the nfdump application. It can be downloaded at
 +http://​nfdump.sourceforge.net/​.
 +  wget http://​downloads.sourceforge.net/​project/​nfdump/​stable/​nfdump-1.6.6/​nfdump-1.6.6.tar.gz
 +  tar -zxvf nfdump-1.6.6.tar.gz
 +  cd nfdump-1.6.6/​
 +  ./configure --enable-nfprofile
 +  make
 +  make install
 +  make clean
 +  cd ..
 +
 +
 +====NfSen installation====
 +
 +Dowload the nfsen application and extract it. It can be downloaded at
 +http://​nfsen.sourceforge.net/​.
 +  wget http://​downloads.sourceforge.net/​project/​nfsen/​stable/​nfsen-1.3.6p1/​nfsen-1.3.6p1.tar.gz
 +  tar -zxvf nfsen-1.3.6p1.tar.gz
 +  cd nfsen-1.3.6p1/​
 +
 +You can modify the configuration file. Have the following.
 +<file - nfsen.conf>​
 +  $BASEDIR = "/​usr/​local";​
 +  $HTMLDIR ​   = "/​var/​www/​nfsen/";​
 +  $VARDIR="/​var/​nfsen";​
 +  $CONFDIR="/​etc/"​
 +  $PROFILESTATDIR="​${VARDIR}/​profiles-stat";​
 +  $PROFILEDATADIR="​${VARDIR}/​profiles-data";​
 +  $USER    = "​nfsen";​
 +  $WWWUSER ​ = "​apache";​
 +  $WWWGROUP = "​apache";​
 +  %sources = (
 +      '​Sydney_Router_1' ​  => { '​port'​ => '​2055',​ '​IP'​ => '​10.20.60.254',​ '​col'​ => '#​ff0000',​ '​type'​ => '​netflow'​ },
 +      '​Sydney_Riverbed_1' ​  => { '​port'​ => '​2055',​ '​IP'​ => '​10.20.60.253',​ '​col'​ => '#​00ff00',​ '​type'​ => '​netflow' ​ },
 +  );
 +  $MAIL_FROM ​  = '​noreply@test.com';​
 +  $SMTP_SERVER = '​mail.test.com';​
 +</​file>​
 +
 +
 +  cp etc/​nfsen-dist.conf etc/​nfsen.conf
 +  vi etc/​nfsen.conf
 +  mkdir -p /​var/​local/​nfsen
 +
 +
 +Create a user named nfsen.
 +  sudo /​usr/​sbin/​useradd -c '​NfSen'​ -d / -g apache -M -s /​sbin/​nologin nfsen
 +
 +Install the nfsen application.
 +  sudo ./​install.pl etc/​nfsen.conf
 +  cd ~
 +
 +
 +==== Service configuration====
 +
 +Find where the nfsen application was installed to.
 +  grep -E "​(\$BASEDIR|\$BINDIR)"​ nfsen/​nfsen-$ver/​etc/​nfsen.conf | grep -v ^#
 +$BASEDIR = "/​usr/​local";​
 +$BINDIR="​${BASEDIR}/​bin";​
 +  ls -1 /​usr/​local/​bin/​nfsen
 +/​usr/​local/​bin/​nfsen
 +
 +Enable the nfsen service so that it will start when the system starts up. Here
 +is a script I created to start and stop the nfsen daemon.
 +<file bash /​etc/​init.d/​nfsen>​
 +#!/bin/bash
 +#
 +# nfsen - Startup script for the nfsen - Netflow collection and viewing - system
 +#
 +# chkconfig: - 50 50
 +# description:​ nfsen
 +
 +DAEMON=/​usr/​local/​bin/​nfsen
 +case "​$1"​ in
 +   ​start)
 +      $DAEMON start
 +      ;;
 +   stop)
 +      $DAEMON stop
 +      ;;
 +   ​status)
 +      $DAEMON status
 +      ;;
 +   ​restart)
 +      $DAEMON stop
 +      $DAEMON start
 +      ;;
 +   *)
 +      echo "​Usage:​ $0 {start|stop|status|restart}"​
 +      exit 1
 +      ;;
 +esac
 +</​file>​
 +  vi /​etc/​rc.d/​init.d/​nfsen
 +  chmod 755 /​etc/​rc.d/​init.d/​nfsen
 +  /​sbin/​chkconfig --add nfsen
 +  /​sbin/​chkconfig nfsen on
 +  /​sbin/​chkconfig --list nfsen
 +nfsen           ​0:​off ​  ​1:​off ​  ​2:​on ​   3:on    4:on    5:on    6:off
 +
 +Find where the configuration was installed to.
 +  grep -E "​(\$BASEDIR|\$CONFDIR)"​ nfsen/​nfsen-$ver/​etc/​nfsen.conf | grep -v ^#
 +$BASEDIR = "/​usr/​local";​
 +$CONFDIR="​${BASEDIR}/​etc";​
 +  ls -1 /​usr/​local/​etc/​nfsen.conf
 +/​usr/​local/​etc/​nfsen.conf
 +
 +You will need to modify the original configuration file. Have the following.
 +  cp /​usr/​local/​etc/​nfsen.conf /​usr/​local/​etc/​nfsen.conf.example
 +  vi /​usr/​local/​etc/​nfsen.conf
 +  mkdir /​data/​logs/​nfcapd/​
 +  mkdir /​data/​logs/​nfsen/​
 +  chown -R root:it /​data/​logs/​nfcapd/​
 +  chown -R root:it /​data/​logs/​nfsen/​
 +
 +You will need to create a configuration file for nfsen used by apache. Have the
 +following.
 +  Alias /nfsen/ "/​data/​websites/​test/​server/​nfsen/"​
 +  <​Directory "/​data/​websites/​test/​server/​nfsen">​
 +      AuthType Basic
 +      AuthName "​Restricted"​
 +      AuthUserFile /​etc/​httpd/​conf/​htaccounts
 +      Require user Administrator
 +      DirectoryIndex nfsen.php
 +      AllowOverride None
 +      Options None
 +      Order allow,deny
 +      Allow from all
 +  </​Directory>​
 +  rpm -ql httpd-* | grep conf.d
 +/​etc/​httpd/​conf.d
 +/​etc/​httpd/​conf.d/​README
 +/​etc/​httpd/​conf.d/​proxy_ajp.conf
 +/​etc/​httpd/​conf.d/​welcome.conf
 +  vi /​etc/​httpd/​conf.d/​nfsen.conf
 +
 +Create a user account using htpasswd that will be allowed to view the netflow
 +information.
 +  rpm -ql httpd-* | grep htpasswd
 +/​usr/​bin/​htpasswd
 +/​usr/​share/​man/​man1/​htpasswd.1.gz
 +  /​usr/​bin/​htpasswd -c -s /​etc/​httpd/​conf/​htaccounts Administrator
 +New password: ********
 +Re-type new password: ********
 +Adding password for user Administrator
 +
 +Copy the nfsen web directory and set ownership and permissions. By the way,
 +there is already a group named it which includes an account for the web developers.
 +  grep "​\$HTMLDIR"​ nfsen/​nfsen-$ver/​etc/​nfsen.conf
 +$HTMLDIR ​   = "/​var/​www/​html/​nfsen/";​
 +  rm -fr nfsen/
 +  cp -Rp /​var/​www/​nfsen/​ /​data/​websites/​test/​server/​nfsen/​
 +  chown -R apache:it /​data/​websites/​test/​server/​nfsen/​
 +  chmod -R 774 /​data/​websites/​test/​server/​nfsen/​
 +
 +You will need to configure SELinux appropriately. SELinux status can be
 +found by running sestatus.
 +  /​usr/​sbin/​sestatus | grep status:
 +SELinux status: ​                ​enabled
 +
 +Before starting the server, make sure that tcp ports 80, 443 and udp ports 9991,
 +9992, and 9993 are open in case you are running firewall software. Here are
 +some sample rules.
 +  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p udp -m udp --dport 9991 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p udp -m udp --dport 9992 -j ACCEPT
 +  -A RH-Firewall-1-INPUT -p udp -m udp --dport 9993 -j ACCEPT
 +  /​sbin/​service iptables stop
 +Flushing firewall rules: ​                                  ​[ ​ OK  ]
 +Setting chains to policy ACCEPT: filter ​                   [  OK  ]
 +Unloading iptables modules: ​                               [  OK  ]
 +  cp /​etc/​sysconfig/​iptables /​etc/​sysconfig/​iptables.previous
 +  vi /​etc/​sysconfig/​iptables
 +  /​sbin/​service iptables start
 +Applying iptables firewall rules: ​                         [  OK  ]
 +Loading additional iptables modules: ip_conntrack_netbios_n[ ​ OK  ]
 +
 +Start the apache service.
 +   /​sbin/​service httpd start
 +     ​Starting httpd: [  OK  ]
 +
 +Start the nfsen service.
 +  /​sbin/​service nfsen start
 +    Starting nfcapd:​(core_router_location1)[12989] (core_router_location3)[12992] ​
 +    (core_router_location2)[12995] ​
 +    Starting nfsend.
 +  /​sbin/​service nfsen status
 +    NfSen version: version
 +    NfSen status:
 +    Collector for (core_router_location1) port 9991 is running [2993].
 +    Collector for (core_router_location3) port 9993 is running [2996].
 +    Collector for (core_router_location2) port 9992 is running [2999].
 +    nfsen daemon: ​ pid: [3001] is running.
 +
 +
 +==== View status on website ====
 +
 +Navigate your web browser to http://​devdoon/​test/​ . Click on the link for
 +Netflow information - NfSen. After you login, you will see a screen showing a
 +summary of the netflow data.
 +
 +
 +==== Service check ====
 +
 +Reboot your computer. Log in like normal and check to see that the httpd and
 +nfsen services are running. That's it, now you have nfsen running in Red Hat
 +Enterprise Linux.
 +  /​sbin/​shutdown -r now
 +  /​sbin/​service httpd status
 +    httpd (pid  3106) is running...
 +  /​sbin/​service nfsen status
 +    NfSen version: version
 +    NfSen status:
 +    Collector for (core_router_location1) port 9991 is running [2993].
 +    Collector for (core_router_location3) port 9993 is running [2996].
 +    Collector for (core_router_location2) port 9992 is running [2999].
 +    nfsen daemon: ​ pid: [3001] is running.
 +
 +======The logs of the install======
 +<​code>​
 +Using username "​carmom"​.
 +
 +
 +
 +    You must be authorised to use this computer. (ITSA v1.8)
 +
 +
 +    Continuing to logon means you expressly consent to monitoring of use
 +    and agree to comply with the policy on "The proper use of ITSA.s IT
 +    facilities, including email and internet"​. ​ If monitoring reveals
 +    evidence of misuse, this evidence can be used to support action taken
 +    to investigate a breach of the APS Code of Conduct, and/or in a court
 +    of law.
 +
 +
 +
 +
 +
 +Access denied
 +carmom@doon'​s password:
 +Access denied
 +carmom@doon'​s password:
 +Last login: Fri May 18 09:41:27 2012 from 10.20.51.32
 +
 +(carmom@doon)-(0)-(09:​44 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /etc/
 +Display all 253 possibilities?​ (y or n)
 +abrt/                                 ​mke2fs.conf
 +acpi/                                 ​modprobe.d/​
 +adjtime ​                              motd
 +aliases ​                              mtab
 +aliases.db ​                           mtools.conf
 +aliases.orig ​                         my.cnf
 +alsa/                                 ​nanorc
 +alternatives/ ​                        ​netconfig
 +anacrontab ​                           NetworkManager/​
 +asound.conf ​                          ​networks
 +at.deny ​                              ​nfsmount.conf
 +audisp/ ​                              ​nsswitch.conf
 +audit/ ​                               ntp/
 +autofs_ldap_auth.conf ​                ​ntp.conf
 +auto.master ​                          ​ntp.conf.orig
 +auto.misc ​                            ​oddjob/​
 +auto.net ​                             oddjobd.conf
 +auto.smb ​                             oddjobd.conf.d/​
 +avahi/ ​                               openldap/
 +bash_completion.d/ ​                   opt/
 +bashrc ​                               PackageKit/
 +blkid/ ​                               pam.d/
 +bonobo-activation/ ​                   pango/
 +
 +(carmom@doon)-(0)-(09:​44 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​tac_plus.conf
 +
 +(carmom@doon)-(0)-(09:​48 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /etc/
 +Display all 253 possibilities?​ (y or n)
 +
 +(carmom@doon)-(0)-(09:​48 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /etc/t
 +tac_plus.conf ​ terminfo/
 +
 +(carmom@doon)-(0)-(09:​48 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /etc/
 +Display all 253 possibilities?​ (y or n)
 +abrt/                                 ​mke2fs.conf
 +acpi/                                 ​modprobe.d/​
 +adjtime ​                              motd
 +aliases ​                              mtab
 +aliases.db ​                           mtools.conf
 +aliases.orig ​                         my.cnf
 +alsa/                                 ​nanorc
 +alternatives/ ​                        ​netconfig
 +anacrontab ​                           NetworkManager/​
 +asound.conf ​                          ​networks
 +at.deny ​                              ​nfsmount.conf
 +audisp/ ​                              ​nsswitch.conf
 +audit/ ​                               ntp/
 +autofs_ldap_auth.conf ​                ​ntp.conf
 +auto.master ​                          ​ntp.conf.orig
 +auto.misc ​                            ​oddjob/​
 +auto.net ​                             oddjobd.conf
 +auto.smb ​                             oddjobd.conf.d/​
 +avahi/ ​                               openldap/
 +bash_completion.d/ ​                   opt/
 +bashrc ​                               PackageKit/
 +blkid/ ​                               pam.d/
 +bonobo-activation/ ​                   pango/
 +
 +(carmom@doon)-(0)-(09:​48 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​tac_plus.conf
 +
 +(carmom@doon)-(0)-(09:​48 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​do_auth.ini
 +
 +(carmom@doon)-(0)-(09:​49 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​tac_plus.conf
 +
 +(carmom@doon)-(0)-(09:​49 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ duso vim /​etc/​tac_plus.conf
 +-bash: duso: command not found
 +
 +(carmom@doon)-(0)-(09:​49 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ sudo
 +usage: sudo -h | -K | -k | -L | -V
 +usage: sudo -v [-AknS] [-g groupname|#​gid] [-p prompt] [-u user name|#uid]
 +usage: sudo -l[l] [-AknS] [-g groupname|#​gid] [-p prompt] [-U user name] [-u
 +            user name|#uid] [-g groupname|#​gid] [command]
 +usage: sudo [-AbEHknPS] [-r role] [-t type] [-C fd] [-g groupname|#​gid] [-p
 +            prompt] [-u user name|#uid] [-g groupname|#​gid] [VAR=value] [-i|-s]
 +            [<​command>​]
 +usage: sudo -e [-AknS] [-r role] [-t type] [-C fd] [-g groupname|#​gid] [-p
 +            prompt] [-u user name|#uid] file ...
 +
 +(carmom@doon)-(0)-(09:​49 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ sudo vim /​etc/​tac_plus.conf
 +
 +(carmom@doon)-(0)-(09:​50 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ /​etc/​init.d/​tac_plus restart
 +rm: cannot remove `/​var/​run/​tac_plus.pid':​ Permission deniedFAILED]
 +
 +tac_plus is already running :
 +
 +(carmom@doon)-(0)-(09:​50 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ sudo /​etc/​init.d/​tac_plus restart
 +Shutting down tac_plus: ​                                   [  OK  ]
 +Starting tac_plus :                                        [  OK  ]
 +
 +(carmom@doon)-(0)-(09:​50 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /var/lo
 +local/ ​     lock/       ​log/ ​       lost+found/
 +
 +(carmom@doon)-(0)-(09:​50 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /var/log/ta
 +tac/          tac_plus.log ​ tallylog
 +
 +(carmom@doon)-(0)-(09:​50 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac_plus.log
 +Mon Apr 16 18:06:25 2012 [25413]: tac_plus server F4.0.4.25 starting
 +Mon Apr 16 18:06:25 2012 [25413]: uid=0 euid=0 gid=0 egid=0 s=4
 +Mon Apr 16 18:06:29 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:29 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +Mon Apr 16 18:06:35 2012 [25413]: login query for '​carmom'​ tty4 from 10.20.55.25 ​                                                                                                             4 accepted
 +Mon Apr 16 18:06:35 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:35 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +Mon Apr 16 18:06:35 2012 [25413]: authorization query for '​carmom'​ tty4 from 10.                                                                                                              20.55.254 accepted
 +Mon Apr 16 18:06:35 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:35 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +^C
 +
 +(carmom@doon)-(0)-(10:​09 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /var/log/
 +anaconda.ifcfg.log ​   gdm/                  samba/
 +anaconda.log ​         httpd/ ​               secure
 +anaconda.program.log ​ lastlog ​              ​secure-20120429
 +anaconda.storage.log ​ maillog ​              ​secure-20120506
 +anaconda.syslog ​      ​maillog-20120429 ​     secure-20120513
 +anaconda.xlog ​        ​maillog-20120506 ​     secure-20120520
 +anaconda.yum.log ​     maillog-20120513 ​     spice-vdagentd/​
 +audit/ ​               maillog-20120520 ​     spooler
 +boot.log ​             mcelog ​               spooler-20120429
 +btmp                  messages ​             spooler-20120506
 +btmp-20120501 ​        ​messages-20120429 ​    ​spooler-20120513
 +ConsoleKit/ ​          ​messages-20120506 ​    ​spooler-20120520
 +cron                  messages-20120513 ​    sssd/
 +cron-20120429 ​        ​messages-20120520 ​    tac/
 +cron-20120506 ​        ​msktutil ​             tac_plus.log
 +cron-20120513 ​        ​ntpstats/ ​            ​tallylog
 +cron-20120520 ​        ​pm-powersave.log ​     wpa_supplicant.log
 +cups/                 ​ppp/ ​                 wtmp
 +dmesg                 ​prelink/ ​             Xorg.0.log
 +dmesg.old ​            ​rancid/ ​              ​Xorg.0.log.old
 +do_auth.log ​          ​rhsm/ ​                ​Xorg.9.log
 +dracut.log ​           sa/                   ​yum.log
 +
 +(carmom@doon)-(0)-(10:​09 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /var/log/ta
 +tac/          tac_plus.log ​ tallylog
 +
 +(carmom@doon)-(0)-(10:​09 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac
 +tac/          tac_plus.log
 +
 +(carmom@doon)-(0)-(10:​09 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac/​tac_plus.acct
 +May 21 00:04:37 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31227   ​timezone=UTC ​   service=shell ​  ​start_time=1337558677 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 00:04:43 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31228   ​timezone=UTC ​   service=shell ​  ​start_time=1337558683 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 00:04:43 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31212   ​timezone=UTC ​   service=shell ​  ​start_time=1337558656 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=27 stop_time=1337558683
 +May 21 00:04:45 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   start   ​task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558685 ​  ​service=none
 +May 21 00:04:46 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558686 ​  ​cmd=terminal length 0 (SUCCESS)s ​                                                                                                             ervice=none
 +May 21 00:04:46 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558686 ​  ​cmd=terminal width 132 (SUCCESS) ​                                                                                                             service=none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   start   ​task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​service=none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​cmd=echo (SUCCESS) ​     service= ​                                                                                                             none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​stop_time=1337558687 ​   service= ​                                                                                                             none
 +May 21 00:04:50 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558690 ​  ​stop_time=1337558690 ​   service= ​                                                                                                             none
 +q^[[A^C
 +
 +(carmom@doon)-(0)-(10:​09 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ cat  /​var/​log/​tac/​tac_plus.acct | grep 10.20.50.253
 +
 +(carmom@doon)-(0)-(10:​10 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac_plus.log
 +Mon Apr 16 18:06:25 2012 [25413]: tac_plus server F4.0.4.25 starting
 +Mon Apr 16 18:06:25 2012 [25413]: uid=0 euid=0 gid=0 egid=0 s=4
 +Mon Apr 16 18:06:29 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:29 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +Mon Apr 16 18:06:35 2012 [25413]: login query for '​carmom'​ tty4 from 10.20.55.25 ​                                                                                                             4 accepted
 +Mon Apr 16 18:06:35 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:35 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +Mon Apr 16 18:06:35 2012 [25413]: authorization query for '​carmom'​ tty4 from 10.                                                                                                              20.55.254 accepted
 +Mon Apr 16 18:06:35 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:35 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +^C
 +
 +(carmom@doon)-(0)-(10:​12 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ df -h
 +Filesystem ​           Size  Used Avail Use% Mounted on
 +/​dev/​mapper/​vg00-lv00
 +                      5.0G  2.7G  2.1G  57% /
 +tmpfs                1004M     0 1004M   0% /dev/shm
 +/​dev/​sda1 ​            ​248M ​  ​32M ​ 204M  14% /boot
 +/​dev/​mapper/​vg00-lv05
 +                      2.8G   ​80M ​ 2.5G   4% /home
 +/​dev/​mapper/​vg00-lv03
 +                      3.0G   ​72M ​ 2.8G   3% /opt
 +/​dev/​mapper/​vg00-lv04
 +                      2.0G   ​68M ​ 1.9G   4% /tmp
 +/​dev/​mapper/​vg00-lv02
 +                      3.0G  270M  2.6G  10% /var
 +/​dev/​sr0 ​             3.4G  3.4G     0 100% /mnt
 +
 +(carmom@doon)-(0)-(10:​12 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /etc/
 +Display all 253 possibilities?​ (y or n)
 +
 +(carmom@doon)-(0)-(10:​12 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​tac_plus.conf
 +
 +(carmom@doon)-(0)-(10:​12 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​init.d/​tac_plus
 +
 +(carmom@doon)-(0)-(10:​13 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ sudo  /​etc/​init.d/​tac_plus
 +Usage: tac_plus {start|stop|status|restart|reload|test}
 +
 +(carmom@doon)-(0)-(10:​13 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ sudo vim  /​etc/​init.d/​tac_plus
 +
 +(carmom@doon)-(0)-(10:​13 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ sudo /​etc/​init.d/​tac_plus restart
 +Shutting down tac_plus: ​                                   [  OK  ]
 +Starting tac_plus with debug level 16 :                    [  OK  ]
 +
 +(carmom@doon)-(0)-(10:​14 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac_plus.log
 +Mon Apr 16 18:06:35 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:35 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +Mon Apr 16 18:06:35 2012 [25413]: authorization query for '​carmom'​ tty4 from 10.                                                                                                              20.55.254 accepted
 +Mon Apr 16 18:06:35 2012 [25413]: session.peerip is 10.20.55.254
 +Mon Apr 16 18:06:35 2012 [25413]: connect from 10.20.55.254 [10.20.55.254]
 +Mon May 21 10:14:05 2012 [10937]: Reading config
 +Mon May 21 10:14:05 2012 [10937]: Version F4.0.4.25 Initialized 1
 +Mon May 21 10:14:05 2012 [10937]: tac_plus server F4.0.4.25 starting
 +Mon May 21 10:14:05 2012 [10938]: Backgrounded
 +Mon May 21 10:14:05 2012 [10941]: uid=0 euid=0 gid=0 egid=0 s=0
 +Mon May 21 10:14:27 2012 [10941]: session.peerip is 10.20.50.253
 +Mon May 21 10:14:27 2012 [10950]: connect from 10.20.50.253 [10.20.50.253]
 +Mon May 21 10:14:27 2012 [10950]: login query for '​carmom'​ ssh from 10.20.50.253 ​                                                                                                              ​accepted
 +Mon May 21 10:14:27 2012 [10941]: session.peerip is 10.20.50.253
 +Mon May 21 10:14:27 2012 [10954]: connect from 10.20.50.253 [10.20.50.253]
 +Mon May 21 10:14:27 2012 [10954]: authorization query for '​carmom'​ ssh from 10.2                                                                                                              0.50.253 accepted
 +^C
 +
 +(carmom@doon)-(0)-(10:​14 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f
 +.bash_history ​   buildTemp/ ​      ​.ssh/ ​           .vimrc
 +.bash_profile ​   .lesshst ​        .vim/
 +.bashrc ​         networkWiki.tgz ​ .viminfo
 +
 +(carmom@doon)-(0)-(10:​14 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /var/lo
 +local/ ​     lock/       ​log/ ​       lost+found/
 +
 +(carmom@doon)-(0)-(10:​14 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /var/log/ta
 +tac/          tac_plus.log ​ tallylog
 +
 +(carmom@doon)-(0)-(10:​14 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac/​tac_plus.acct
 +May 21 00:04:43 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31228   ​timezone=UTC ​   service=shell ​  ​start_time=1337558683 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 00:04:43 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31212   ​timezone=UTC ​   service=shell ​  ​start_time=1337558656 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=27 stop_time=1337558683
 +May 21 00:04:45 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   start   ​task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558685 ​  ​service=none
 +May 21 00:04:46 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558686 ​  ​cmd=terminal length 0 (SUCCESS)s ​                                                                                                             ervice=none
 +May 21 00:04:46 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558686 ​  ​cmd=terminal width 132 (SUCCESS) ​                                                                                                             service=none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   start   ​task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​service=none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​cmd=echo (SUCCESS) ​     service= ​                                                                                                             none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​stop_time=1337558687 ​   service= ​                                                                                                             none
 +May 21 00:04:50 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558690 ​  ​stop_time=1337558690 ​   service= ​                                                                                                             none
 +May 21 00:12:00 10.20.52.243 ​   carmom ​ 0       ​10.20.51.32 ​    ​start ​  ​task_id= ​                                                                                                             10.20.51.32@pts/​20 ​     start_time=1337559120 ​  ​service=none
 +^C
 +
 +(carmom@doon)-(0)-(10:​47 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ tail -f /​var/​log/​tac/​tac_plus.acct
 +May 21 00:04:43 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31228   ​timezone=UTC ​   service=shell ​  ​start_time=1337558683 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 00:04:43 10.20.60.244 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31212   ​timezone=UTC ​   service=shell ​  ​start_time=1337558656 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=27 stop_time=1337558683
 +May 21 00:04:45 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   start   ​task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558685 ​  ​service=none
 +May 21 00:04:46 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558686 ​  ​cmd=terminal length 0 (SUCCESS)s ​                                                                                                             ervice=none
 +May 21 00:04:46 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558686 ​  ​cmd=terminal width 132 (SUCCESS) ​                                                                                                             service=none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   start   ​task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​service=none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​cmd=echo (SUCCESS) ​     service= ​                                                                                                             none
 +May 21 00:04:47 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558687 ​  ​stop_time=1337558687 ​   service= ​                                                                                                             none
 +May 21 00:04:50 10.20.52.243 ​   rancid ​ 0       ​10.20.55.230 ​   stop    task_id= ​                                                                                                             10.20.55.230@pts/​20 ​    ​start_time=1337558690 ​  ​stop_time=1337558690 ​   service= ​                                                                                                             none
 +May 21 00:12:00 10.20.52.243 ​   carmom ​ 0       ​10.20.51.32 ​    ​start ​  ​task_id= ​                                                                                                             10.20.51.32@pts/​20 ​     start_time=1337559120 ​  ​service=none
 +May 21 00:47:59 10.20.50.253 ​   carmom ​ pts/0   ​unknown start           ​start_ti ​                                                                                                             me=1337561279 ​  ​task_id=0 ​      ​service=shell ​  ​cmd=enable
 +May 21 00:47:59 10.20.50.253 ​   carmom ​ pts/0   ​unknown stop            stop_tim ​                                                                                                             e=1337561279 ​   task_id=0 ​      ​service=shell ​  ​cmd=enable
 +May 21 00:48:01 10.20.50.253 ​   carmom ​ pts/0   ​unknown start           ​start_ti ​                                                                                                             me=1337561281 ​  ​task_id=40311 ​  ​service=shell ​  ​cmd=show running-config
 +May 21 00:48:06 10.20.50.253 ​   carmom ​ pts/0   ​unknown stop            stop_tim ​                                                                                                             e=1337561286 ​   task_id=40311 ​  ​service=shell ​  ​cmd=show running-config
 +May 21 00:49:46 10.20.50.253 ​   carmom ​ pts/0   ​unknown start           ​start_ti ​                                                                                                             me=1337561386 ​  ​task_id=51584 ​  ​service=shell ​  ​cmd=ping 4.2.2.4
 +May 21 00:49:46 10.20.50.253 ​   carmom ​ pts/0   ​unknown stop            stop_tim ​                                                                                                             e=1337561386 ​   task_id=51584 ​  ​service=shell ​  ​cmd=ping 4.2.2.4
 +May 21 01:01:04 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   start   ​task_id= ​                                                                                                             34969   ​timezone=EST ​   service=shell ​  ​start_time=1337562064
 +May 21 01:01:04 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34969   ​timezone=EST ​   service=shell ​  ​start_time=1337562064 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:04 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34970   ​timezone=EST ​   service=shell ​  ​start_time=1337562064 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:04 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34971   ​timezone=EST ​   service=shell ​  ​start_time=1337562064 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:05 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   start   ​task_id= ​                                                                                                             15399   ​timezone=EST ​   service=shell ​  ​start_time=1337562064
 +May 21 01:01:05 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34972   ​timezone=EST ​   service=shell ​  ​start_time=1337562065 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show environment all <cr>
 +May 21 01:01:05 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15399   ​timezone=EST ​   service=shell ​  ​start_time=1337562065 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:05 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15400   ​timezone=EST ​   service=shell ​  ​start_time=1337562065 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:05 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   start   ​task_id= ​                                                                                                             2127    timezone=CST ​   service=shell ​  ​start_time=1337561853
 +May 21 01:01:05 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   start   ​task_id= ​                                                                                                             6796    timezone=UTC ​   service=shell ​  ​start_time=1337562065
 +May 21 01:01:05 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34973   ​timezone=EST ​   service=shell ​  ​start_time=1337562065 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash0: <cr>
 +May 21 01:01:05 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2128    timezone=CST ​   service=shell ​  ​start_time=1337561853 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:05 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2129    timezone=CST ​   service=shell ​  ​start_time=1337561853 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:07 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15401   ​timezone=EST ​   service=shell ​  ​start_time=1337562065 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:07 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34974   ​timezone=EST ​   service=shell ​  ​start_time=1337562065 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:08 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6796    timezone=UTC ​   service=shell ​  ​start_time=1337562068 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:08 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6797    timezone=UTC ​   service=shell ​  ​start_time=1337562068 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:08 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6798    timezone=UTC ​   service=shell ​  ​start_time=1337562068 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:08 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2130    timezone=CST ​   service=shell ​  ​start_time=1337561856 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show environment all <cr>
 +May 21 01:01:08 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15402   ​timezone=EST ​   service=shell ​  ​start_time=1337562066 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show environment all <cr>
 +May 21 01:01:08 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6799    timezone=UTC ​   service=shell ​  ​start_time=1337562068 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show environment all <cr>
 +May 21 01:01:08 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15403   ​timezone=EST ​   service=shell ​  ​start_time=1337562068 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash0: <cr>
 +May 21 01:01:08 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2131    timezone=CST ​   service=shell ​  ​start_time=1337561856 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:01:08 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15404   ​timezone=EST ​   service=shell ​  ​start_time=1337562068 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:09 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6800    timezone=UTC ​   service=shell ​  ​start_time=1337562069 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash0: <cr>
 +May 21 01:01:09 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2127    timezone=CST ​   service=shell ​  ​start_time=1337561853 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:09 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6801    timezone=UTC ​   service=shell ​  ​start_time=1337562069 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34975   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:11 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2132    timezone=CST ​   service=shell ​  ​start_time=1337561856 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34976   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show diag <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34977   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34978   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34979   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan-switch <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34980   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:11 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34981   ​timezone=EST ​   service=shell ​  ​start_time=1337562071 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:12 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6802    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:12 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34982   ​timezone=EST ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:12 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6803    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show diag <cr>
 +May 21 01:01:12 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6805    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:12 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6804    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:12 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15405   ​timezone=EST ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:12 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6806    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan-switch <cr>
 +May 21 01:01:12 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6807    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:12 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2133    timezone=CST ​   service=shell ​  ​start_time=1337561860 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:12 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34983   ​timezone=EST ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:13 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34984   ​timezone=EST ​   service=shell ​  ​start_time=1337562073 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:13 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6808    timezone=UTC ​   service=shell ​  ​start_time=1337562072 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:15 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2134    timezone=CST ​   service=shell ​  ​start_time=1337561861 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show diag <cr>
 +May 21 01:01:15 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34985   ​timezone=EST ​   service=shell ​  ​start_time=1337562075 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:15 172.31.2.80 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             34969   ​timezone=EST ​   service=shell ​  ​start_time=1337562064 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=11 stop_time=1337562075
 +May 21 01:01:15 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2135    timezone=CST ​   service=shell ​  ​start_time=1337561863 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:16 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2137    timezone=CST ​   service=shell ​  ​start_time=1337561864 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan-switch <cr>
 +May 21 01:01:16 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2138    timezone=CST ​   service=shell ​  ​start_time=1337561864 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:17 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6809    timezone=UTC ​   service=shell ​  ​start_time=1337562077 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:17 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15406   ​timezone=EST ​   service=shell ​  ​start_time=1337562073 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show diag <cr>
 +May 21 01:01:18 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2140    timezone=CST ​   service=shell ​  ​start_time=1337561866 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:18 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6810    timezone=UTC ​   service=shell ​  ​start_time=1337562078 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:18 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6811    timezone=UTC ​   service=shell ​  ​start_time=1337562078 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:18 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2141    timezone=CST ​   service=shell ​  ​start_time=1337561866 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:18 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2139    timezone=CST ​   service=shell ​  ​start_time=1337561864 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:19 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2142    timezone=CST ​   service=shell ​  ​start_time=1337561866 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:19 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2136    timezone=CST ​   service=shell ​  ​start_time=1337561863 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:20 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6812    timezone=UTC ​   service=shell ​  ​start_time=1337562080 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:20 172.31.2.70 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             6796    timezone=UTC ​   service=shell ​  ​start_time=1337562065 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=15 stop_time=1337562080
 +May 21 01:01:20 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   start   ​task_id= ​                                                                                                             31115   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562080
 +May 21 01:01:20 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31115   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562080 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:20 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31116   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562080 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:20 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31117   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562080 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:21 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15407   ​timezone=EST ​   service=shell ​  ​start_time=1337562080 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:21 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2143    timezone=CST ​   service=shell ​  ​start_time=1337561868 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:21 172.31.2.98 ​    ​rancid ​ tty514 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             2127    timezone=CST ​   service=shell ​  ​start_time=1337561853 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=15 stop_time=1337561868
 +May 21 01:01:21 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15408   ​timezone=EST ​   service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:21 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31118   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show environment all <cr>
 +May 21 01:01:21 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15409   ​timezone=EST ​   service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan-switch <cr>
 +May 21 01:01:21 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15410   ​timezone=EST ​   service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:21 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15411   ​timezone=EST ​   service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:21 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31119   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash0: <cr>
 +May 21 01:01:22 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15412   ​timezone=EST ​   service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:22 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31120   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562081 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:22 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   start   ​task_id= ​                                                                                                             31318   ​timezone=EST ​   service=shell ​  ​start_time=1337562082
 +May 21 01:01:22 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15413   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:22 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31318   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:22 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31319   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:22 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31320   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:22 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15414   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:23 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31322   ​timezone=EST ​   service=shell ​  ​start_time=1337562083 ​  ​priv-lvl=15 ​   c                                                                                                              md=show flash0: <cr>
 +May 21 01:01:23 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31323   ​timezone=EST ​   service=shell ​  ​start_time=1337562083 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:24 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31324   ​timezone=EST ​   service=shell ​  ​start_time=1337562084 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:24 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15415   ​timezone=EST ​   service=shell ​  ​start_time=1337562084 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:24 172.31.2.88 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             15399   ​timezone=EST ​   service=shell ​  ​start_time=1337562064 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=20 stop_time=1337562084
 +May 21 01:01:24 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31325   ​timezone=EST ​   service=shell ​  ​start_time=1337562084 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show diag <cr>
 +May 21 01:01:24 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31321   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show environment all <cr>
 +May 21 01:01:24 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31326   ​timezone=EST ​   service=shell ​  ​start_time=1337562084 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:24 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31327   ​timezone=EST ​   service=shell ​  ​start_time=1337562084 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:25 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31328   ​timezone=EST ​   service=shell ​  ​start_time=1337562084 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan-switch <cr>
 +May 21 01:01:25 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31329   ​timezone=EST ​   service=shell ​  ​start_time=1337562085 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:25 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31330   ​timezone=EST ​   service=shell ​  ​start_time=1337562085 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:25 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31121   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562085 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:26 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31331   ​timezone=EST ​   service=shell ​  ​start_time=1337562085 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:26 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31122   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show diag <cr>
 +May 21 01:01:26 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31332   ​timezone=EST ​   service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:26 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31123   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:26 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31333   ​timezone=EST ​   service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:26 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31124   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:27 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31125   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan-switch <cr>
 +May 21 01:01:27 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31126   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562086 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:27 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31127   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562087 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:27 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31128   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562087 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:28 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31129   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562087 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:28 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31318   ​timezone=EST ​   service=shell ​  ​start_time=1337562082 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=6 ​ stop_time=1337562088
 +May 21 01:01:28 172.31.2.60 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31334   ​timezone=EST ​   service=shell ​  ​start_time=1337562088 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:28 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31130   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562088 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:30 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31131   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562090 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:30 172.31.2.92 ​    ​rancid ​ tty388 ​ 10.20.55.230 ​   stop    task_id= ​                                                                                                             31115   ​timezone=PERTH ​ service=shell ​  ​start_time=1337562080 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=2 ​     elapsed_time=10 stop_time=1337562090
 +May 21 01:01:34 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   start   ​task_id= ​                                                                                                             2006    timezone=AEST ​  ​service=shell ​  ​start_time=1337562094
 +May 21 01:01:34 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2006    timezone=AEST ​  ​service=shell ​  ​start_time=1337562094 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:34 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2007    timezone=AEST ​  ​service=shell ​  ​start_time=1337562094 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:35 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2008    timezone=AEST ​  ​service=shell ​  ​start_time=1337562094 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:35 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2009    timezone=AEST ​  ​service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:01:35 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2010    timezone=AEST ​  ​service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:01:35 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2011    timezone=AEST ​  ​service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:01:35 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   start   ​task_id= ​                                                                                                             1873    timezone=UTC ​   service=shell ​  ​start_time=1337562095
 +May 21 01:01:35 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1873    timezone=UTC ​   service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:35 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   start   ​task_id= ​                                                                                                             2114    timezone=EST ​   service=shell ​  ​start_time=1337562095
 +May 21 01:01:36 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1874    timezone=UTC ​   service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2114    timezone=EST ​   service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:36 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2012    timezone=AEST ​  ​service=shell ​  ​start_time=1337562095 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2115    timezone=EST ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2116    timezone=EST ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:36 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1875    timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2117    timezone=EST ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:01:36 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1876    timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2118    timezone=EST ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:01:36 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1877    timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2119    timezone=EST ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:01:36 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   start   ​task_id= ​                                                                                                             33012   ​timezone=UTC ​   service=shell ​  ​start_time=1337562096
 +May 21 01:01:36 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1878    timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:01:36 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33012   ​timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:01:36 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33013   ​timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:01:36 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1879    timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:36 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2120    timezone=EST ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:37 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33014   ​timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:01:37 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33015   ​timezone=UTC ​   service=shell ​  ​start_time=1337562097 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:01:37 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2013    timezone=AEST ​  ​service=shell ​  ​start_time=1337562097 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:37 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33016   ​timezone=UTC ​   service=shell ​  ​start_time=1337562097 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:01:37 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33017   ​timezone=UTC ​   service=shell ​  ​start_time=1337562097 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:01:38 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2121    timezone=EST ​   service=shell ​  ​start_time=1337562098 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:38 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1880    timezone=UTC ​   service=shell ​  ​start_time=1337562098 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:39 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2014    timezone=AEST ​  ​service=shell ​  ​start_time=1337562099 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:39 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2015    timezone=AEST ​  ​service=shell ​  ​start_time=1337562099 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:40 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2016    timezone=AEST ​  ​service=shell ​  ​start_time=1337562099 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:01:40 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2122    timezone=EST ​   service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:40 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33018   ​timezone=UTC ​   service=shell ​  ​start_time=1337562097 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:01:40 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2017    timezone=AEST ​  ​service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:40 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2123    timezone=EST ​   service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:40 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2124    timezone=EST ​   service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:01:40 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2125    timezone=EST ​   service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:40 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2018    timezone=AEST ​  ​service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config <cr>
 +May 21 01:01:40 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2126    timezone=EST ​   service=shell ​  ​start_time=1337562100 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:41 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33019   ​timezone=UTC ​   service=shell ​  ​start_time=1337562099 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:01:42 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2019    timezone=AEST ​  ​service=shell ​  ​start_time=1337562102 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:43 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1881    timezone=UTC ​   service=shell ​  ​start_time=1337562103 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:43 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1882    timezone=UTC ​   service=shell ​  ​start_time=1337562103 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:44 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1883    timezone=UTC ​   service=shell ​  ​start_time=1337562103 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:01:44 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1884    timezone=UTC ​   service=shell ​  ​start_time=1337562104 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:44 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1885    timezone=UTC ​   service=shell ​  ​start_time=1337562104 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:44 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2127    timezone=EST ​   service=shell ​  ​start_time=1337562104 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:44 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33020   ​timezone=UTC ​   service=shell ​  ​start_time=1337562104 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:01:44 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33021   ​timezone=UTC ​   service=shell ​  ​start_time=1337562104 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:01:45 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2020    timezone=AEST ​  ​service=shell ​  ​start_time=1337562105 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:45 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33022   ​timezone=UTC ​   service=shell ​  ​start_time=1337562104 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:01:45 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33023   ​timezone=UTC ​   service=shell ​  ​start_time=1337562105 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:01:45 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33024   ​timezone=UTC ​   service=shell ​  ​start_time=1337562105 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:01:47 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2021    timezone=AEST ​  ​service=shell ​  ​start_time=1337562107 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:47 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1886    timezone=UTC ​   service=shell ​  ​start_time=1337562107 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:48 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2128    timezone=EST ​   service=shell ​  ​start_time=1337562108 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:49 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33025   ​timezone=UTC ​   service=shell ​  ​start_time=1337562109 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:01:51 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1887    timezone=UTC ​   service=shell ​  ​start_time=1337562111 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:52 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2129    timezone=EST ​   service=shell ​  ​start_time=1337562112 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:52 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2022    timezone=AEST ​  ​service=shell ​  ​start_time=1337562112 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:01:52 10.20.55.254 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             2006    timezone=AEST ​  ​service=shell ​  ​start_time=1337562094 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=18
 +May 21 01:01:53 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33026   ​timezone=UTC ​   service=shell ​  ​start_time=1337562113 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:01:55 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1888    timezone=UTC ​   service=shell ​  ​start_time=1337562114 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:57 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33027   ​timezone=UTC ​   service=shell ​  ​start_time=1337562117 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:01:58 10.20.58.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             2114    timezone=EST ​   service=shell ​  ​start_time=1337562095 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=22
 +May 21 01:01:59 10.20.52.249 ​   rancid ​ tty3    10.20.55.230 ​   stop    task_id= ​                                                                                                             1873    timezone=UTC ​   service=shell ​  ​start_time=1337562095 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=24 stop_time=1337562119
 +May 21 01:02:04 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33028   ​timezone=UTC ​   service=shell ​  ​start_time=1337562124 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:02:04 10.20.60.243 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             33012   ​timezone=UTC ​   service=shell ​  ​start_time=1337562096 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=2 ​     elapsed_time=28 stop_time=1337562124
 +May 21 01:03:32 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   start   ​task_id= ​                                                                                                             16545   ​timezone=UTC ​   service=shell ​  ​start_time=1337562212
 +May 21 01:03:32 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16545   ​timezone=UTC ​   service=shell ​  ​start_time=1337562212 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:03:32 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16546   ​timezone=UTC ​   service=shell ​  ​start_time=1337562212 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:03:33 10.20.80.241 ​   rancid ​ tty1    10.20.55.230 ​   start   ​task_id= ​                                                                                                             3045    timezone=UTC ​   service=shell ​  ​start_time=1337562212
 +May 21 01:03:33 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16547   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:03:33 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   start   ​task_id= ​                                                                                                             31232   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213
 +May 21 01:03:33 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31232   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:03:33 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31233   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:03:33 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16548   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:03:33 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31234   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:03:33 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   start   ​task_id= ​                                                                                                             50505   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213
 +May 21 01:03:33 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16549   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:03:33 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50505   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:03:33 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50507   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:03:33 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   start   ​task_id= ​                                                                                                             50506   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213
 +May 21 01:03:33 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50508   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:03:34 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16550   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50506   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal length 0 <cr>
 +May 21 01:03:34 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31235   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50510   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=terminal width 132 <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50511   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show version <cr>
 +May 21 01:03:34 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16551   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50509   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:03:34 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31236   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50513   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50512   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show env all <cr>
 +May 21 01:03:34 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50515   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:03:35 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31237   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:03:35 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50514   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=15 ​   c                                                                                                              md=show boot <cr>
 +May 21 01:03:35 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31238   ​timezone=UTC ​   service=shell ​  ​start_time=1337562214 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:03:35 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50516   ​timezone=UTC ​   service=shell ​  ​start_time=1337562215 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:03:35 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50517   ​timezone=UTC ​   service=shell ​  ​start_time=1337562215 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show flash: <cr>
 +May 21 01:03:35 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50519   ​timezone=UTC ​   service=shell ​  ​start_time=1337562215 ​  ​priv-lvl=15 ​   c                                                                                                              md=dir /all nvram: <cr>
 +May 21 01:03:37 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16552   ​timezone=UTC ​   service=shell ​  ​start_time=1337562217 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:03:38 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50518   ​timezone=UTC ​   service=shell ​  ​start_time=1337562218 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:03:39 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31239   ​timezone=UTC ​   service=shell ​  ​start_time=1337562219 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:03:39 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50520   ​timezone=UTC ​   service=shell ​  ​start_time=1337562219 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show controllers <cr>
 +May 21 01:03:40 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16553   ​timezone=UTC ​   service=shell ​  ​start_time=1337562220 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:03:41 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16554   ​timezone=UTC ​   service=shell ​  ​start_time=1337562221 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:03:41 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16555   ​timezone=UTC ​   service=shell ​  ​start_time=1337562221 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:03:41 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16556   ​timezone=UTC ​   service=shell ​  ​start_time=1337562221 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:03:42 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16557   ​timezone=UTC ​   service=shell ​  ​start_time=1337562221 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:03:43 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31240   ​timezone=UTC ​   service=shell ​  ​start_time=1337562223 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:03:43 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31241   ​timezone=UTC ​   service=shell ​  ​start_time=1337562223 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:03:43 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31242   ​timezone=UTC ​   service=shell ​  ​start_time=1337562223 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:03:43 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31243   ​timezone=UTC ​   service=shell ​  ​start_time=1337562223 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:03:44 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16558   ​timezone=UTC ​   service=shell ​  ​start_time=1337562223 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:03:44 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31244   ​timezone=UTC ​   service=shell ​  ​start_time=1337562224 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:03:45 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50521   ​timezone=UTC ​   service=shell ​  ​start_time=1337562224 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:03:45 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50523   ​timezone=UTC ​   service=shell ​  ​start_time=1337562225 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:03:45 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50524   ​timezone=UTC ​   service=shell ​  ​start_time=1337562225 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:03:45 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50525   ​timezone=UTC ​   service=shell ​  ​start_time=1337562225 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:03:46 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50526   ​timezone=UTC ​   service=shell ​  ​start_time=1337562225 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:03:46 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16559   ​timezone=UTC ​   service=shell ​  ​start_time=1337562226 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:03:47 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31245   ​timezone=UTC ​   service=shell ​  ​start_time=1337562227 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:03:47 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50522   ​timezone=UTC ​   service=shell ​  ​start_time=1337562227 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show inventory raw <cr>
 +May 21 01:03:48 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50528   ​timezone=UTC ​   service=shell ​  ​start_time=1337562228 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vtp status <cr>
 +May 21 01:03:48 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50527   ​timezone=UTC ​   service=shell ​  ​start_time=1337562228 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:03:48 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16560   ​timezone=UTC ​   service=shell ​  ​start_time=1337562228 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:03:49 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50529   ​timezone=UTC ​   service=shell ​  ​start_time=1337562228 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show vlan <cr>
 +May 21 01:03:51 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50530   ​timezone=UTC ​   service=shell ​  ​start_time=1337562230 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:03:51 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31246   ​timezone=UTC ​   service=shell ​  ​start_time=1337562230 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:03:52 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16561   ​timezone=UTC ​   service=shell ​  ​start_time=1337562232 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:03:52 10.20.88.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             16545   ​timezone=UTC ​   service=shell ​  ​start_time=1337562212 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=20
 +May 21 01:03:52 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50531   ​timezone=UTC ​   service=shell ​  ​start_time=1337562232 ​  ​priv-lvl=1 ​    ​c ​                                                                                                             md=show debugging <cr>
 +May 21 01:03:53 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50532   ​timezone=UTC ​   service=shell ​  ​start_time=1337562233 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:03:54 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31247   ​timezone=UTC ​   service=shell ​  ​start_time=1337562234 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:03:55 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50533   ​timezone=UTC ​   service=shell ​  ​start_time=1337562235 ​  ​priv-lvl=15 ​   c                                                                                                              md=more system:​running-config system:​running-config <cr>
 +May 21 01:03:57 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50534   ​timezone=UTC ​   service=shell ​  ​start_time=1337562237 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:03:57 10.20.70.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             50505   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=24
 +May 21 01:03:58 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50535   ​timezone=UTC ​   service=shell ​  ​start_time=1337562237 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config view full <cr>
 +May 21 01:04:00 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31248   ​timezone=UTC ​   service=shell ​  ​start_time=1337562239 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:04:00 10.20.92.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             31232   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=2 ​     elapsed_time=27
 +May 21 01:04:00 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50537   ​timezone=UTC ​   service=shell ​  ​start_time=1337562240 ​  ​priv-lvl=15 ​   c                                                                                                              md=show running-config <cr>
 +May 21 01:04:02 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50538   ​timezone=UTC ​   service=shell ​  ​start_time=1337562242 ​  ​priv-lvl=15 ​   c                                                                                                              md=write terminal <cr>
 +May 21 01:04:04 10.20.80.241 ​   rancid ​ tty1    10.20.55.230 ​   stop    task_id= ​                                                                                                             3045    timezone=UTC ​   service=shell ​  ​start_time=1337562212 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=31
 +May 21 01:04:08 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50539   ​timezone=UTC ​   service=shell ​  ​start_time=1337562248 ​  ​priv-lvl=0 ​    ​c ​                                                                                                             md=exit <cr>
 +May 21 01:04:08 10.20.70.241 ​   rancid ​ tty2    10.20.55.230 ​   stop    task_id= ​                                                                                                             50506   ​timezone=UTC ​   service=shell ​  ​start_time=1337562213 ​  ​disc-cause=1 ​  ​d ​                                                                                                             isc-cause-ext=9 pre-session-time=1 ​     elapsed_time=35
 +^C
 +
 +(carmom@doon)-(0)-(11:​04 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ cd /​usr/​local/​rancid/​
 +.cloginrc ​ share/
 +
 +(carmom@doon)-(0)-(11:​04 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ cd /​usr/​local/​rancid/​share/​
 +man/    rancid/
 +
 +(carmom@doon)-(0)-(11:​04 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ cd /​usr/​local/​rancid/​share/​rancid/​
 +CHANGES ​            ​FAQ ​                ​rancid-cvspurge
 +cisco-load.exp ​     getipacctg ​         README
 +cisco-reload.exp ​   index.html ​         README.lg
 +cloginrc.sample ​    ​lg.conf.sample ​     README.misc
 +COPYING ​            ​lgnotes.html ​       rtrfilter
 +downreport ​         rancid.conf.sample ​ UPGRADING
 +
 +(carmom@doon)-(0)-(11:​04 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​rancid/​
 +cloginrc ​            ​rancid.conf
 +lg.conf ​             rancid.default.conf
 +
 +(carmom@doon)-(0)-(11:​04 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​rancid/​rancid.
 +
 +(carmom@doon)-(0)-(11:​04 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​rancid/​rancid.conf
 +
 +(carmom@doon)-(0)-(11:​05 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ cd /​var/​local/​rancid/​
 +2960_access_switches/​ CVS/                  nexus_switches/​
 +3750_access_switches/​ firewalls/ ​           wan_routers/​
 +core_switches/ ​       logs/
 +
 +(carmom@doon)-(0)-(11:​05 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​etc/​rancid/​rancid.conf
 +
 +(carmom@doon)-(0)-(11:​05 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​usr/​local/​bin/​
 +agmrancid ​      ​f10rancid ​      ​lgform.cgi ​     rancid-fe
 +alogin ​         f5rancid ​       mrancid ​        ​rancid-run
 +arancid ​        ​flogin ​         mrvlogin ​       rivlogin
 +arrancid ​       fnlogin ​        ​mrvrancid ​      ​rivrancid
 +avologin ​       fnrancid ​       mtlogin ​        ​rrancid
 +avorancid ​      ​francid ​        ​mtrancid ​       srancid
 +blogin ​         hlogin ​         nlogin ​         tac_plus
 +brancid ​        ​hpuifilter ​     nrancid ​        ​tac_pwd
 +cat5rancid ​     hrancid ​        ​nslogin ​        ​tlogin
 +clogin ​         htlogin ​        ​nsrancid ​       tntlogin
 +control_rancid ​ htrancid ​       nxrancid ​       tntrancid
 +cssrancid ​      ​jerancid ​       par             ​trancid
 +do_auth.py ​     jlogin ​         prancid ​        ​xrancid
 +elogin ​         jrancid ​        ​rancid ​         xrrancid
 +erancid ​        ​lg.cgi ​         rancid-cvs ​     zrancid
 +
 +(carmom@doon)-(0)-(11:​05 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ vim /​usr/​local/​bin/​
 +
 +(carmom@doon)-(0)-(11:​06 AM Mon May 21)->
 +(~)-(2 files, 4.5Mb)-->​ cd /​usr/​local/​bin/​
 +
 +(carmom@doon)-(0)-(11:​06 AM Mon May 21)->
 +(/​usr/​local/​bin)-(60 files, 1.5Mb)-->​ ls
 +agmrancid ​  ​control_rancid ​ francid ​    ​lgform.cgi ​ nxrancid ​   srancid
 +alogin ​     cssrancid ​      ​hlogin ​     mrancid ​    ​par ​        ​tac_plus
 +arancid ​    ​do_auth.py ​     hpuifilter ​ mrvlogin ​   prancid ​    ​tac_pwd
 +arrancid ​   elogin ​         hrancid ​    ​mrvrancid ​  ​rancid ​     tlogin
 +avologin ​   erancid ​        ​htlogin ​    ​mtlogin ​    ​rancid-cvs ​ tntlogin
 +avorancid ​  ​f10rancid ​      ​htrancid ​   mtrancid ​   rancid-fe ​  ​tntrancid
 +blogin ​     f5rancid ​       jerancid ​   nlogin ​     rancid-run ​ trancid
 +brancid ​    ​flogin ​         jlogin ​     nrancid ​    ​rivlogin ​   xrancid
 +cat5rancid ​ fnlogin ​        ​jrancid ​    ​nslogin ​    ​rivrancid ​  ​xrrancid
 +clogin ​     fnrancid ​       lg.cgi ​     nsrancid ​   rrancid ​    ​zrancid
 +
 +(carmom@doon)-(0)-(11:​06 AM Mon May 21)->
 +(/​usr/​local/​bin)-(60 files, 1.5Mb)-->​ ls -lah
 +total 1.5M
 +drwxr-xr-x. ​ 2 root root 4.0K May  1 16:16 .
 +drwxr-xr-x. 13 root root 4.0K Apr 30 12:26 ..
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 agmrancid
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 alogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 arancid
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 arrancid
 +-rwxr-xr-x. ​ 1 root root  22K Apr 30 12:26 avologin
 +-rwxr-xr-x. ​ 1 root root 9.6K Apr 30 12:26 avorancid
 +-rwxr-xr-x. ​ 1 root root  19K Apr 30 12:26 blogin
 +-rwxr-xr-x. ​ 1 root root 9.9K Apr 30 12:26 brancid
 +-rwxr-xr-x. ​ 1 root root  37K Apr 30 12:26 cat5rancid
 +-rwxr-xr-x. ​ 1 root root  27K Apr 30 12:26 clogin
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 control_rancid
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 cssrancid
 +-rw-r--r--. ​ 1 root root  22K Apr 16 15:41 do_auth.py
 +-rwxr-xr-x. ​ 1 root root  15K Apr 30 12:26 elogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 erancid
 +-rwxr-xr-x. ​ 1 root root  22K Apr 30 12:26 f10rancid
 +-rwxr-xr-x. ​ 1 root root  19K Apr 30 12:26 f5rancid
 +-rwxr-xr-x. ​ 1 root root  21K Apr 30 12:26 flogin
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 fnlogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 fnrancid
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 francid
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 hlogin
 +-rwxr-xr-x. ​ 1 root root  28K Apr 30 12:26 hpuifilter
 +-rwxr-xr-x. ​ 1 root root  20K Apr 30 12:26 hrancid
 +-rwxr-xr-x. ​ 1 root root  15K Apr 30 12:26 htlogin
 +-rwxr-xr-x. ​ 1 root root 9.2K Apr 30 12:26 htrancid
 +-rwxr-xr-x. ​ 1 root root  21K Apr 30 12:26 jerancid
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 jlogin
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 jrancid
 +-rwxr-xr-x. ​ 1 root root  25K Apr 30 12:26 lg.cgi
 +-rwxr-xr-x. ​ 1 root root 7.7K Apr 30 12:26 lgform.cgi
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 mrancid
 +-rwxr-xr-x. ​ 1 root root  22K Apr 30 12:26 mrvlogin
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 mrvrancid
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 mtlogin
 +-rwxr-xr-x. ​ 1 root root 8.8K Apr 30 12:26 mtrancid
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 nlogin
 +-rwxr-xr-x. ​ 1 root root  12K Apr 30 12:26 nrancid
 +-rwxr-xr-x. ​ 1 root root  20K Apr 30 12:26 nslogin
 +-rwxr-xr-x. ​ 1 root root 9.5K Apr 30 12:26 nsrancid
 +-rwxr-xr-x. ​ 1 root root  37K Apr 30 12:26 nxrancid
 +-rwxr-xr-x. ​ 1 root root 5.9K Apr 30 12:26 par
 +-rwxr-xr-x. ​ 1 root root  19K Apr 30 12:26 prancid
 +-rwxr-xr-x. ​ 1 root root  69K Apr 30 12:26 rancid
 +-rwxr-xr-x. ​ 1 root root 4.6K Apr 30 12:26 rancid-cvs
 +-rwxr-xr-x. ​ 1 root root 3.7K Apr 30 12:26 rancid-fe
 +-rwxr-xr-x. ​ 1 root root 4.8K Apr 30 12:26 rancid-run
 +-rwxr-xr-x. ​ 1 root root  24K Apr 30 12:26 rivlogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 rivrancid
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 rrancid
 +-rwxr-xr-x. ​ 1 root root  13K Apr 30 12:26 srancid
 +-rwxr-xr-x. ​ 1 root root 276K Apr 16 16:28 tac_plus
 +-rwxr-xr-x. ​ 1 root root  16K Apr 16 16:28 tac_pwd
 +-rwxr-xr-x. ​ 1 root root  25K Apr 30 12:26 tlogin
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 tntlogin
 +-rwxr-xr-x. ​ 1 root root 9.8K Apr 30 12:26 tntrancid
 +-rwxr-xr-x. ​ 1 root root 9.8K Apr 30 12:26 trancid
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 xrancid
 +-rwxr-xr-x. ​ 1 root root  44K Apr 30 12:26 xrrancid
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 zrancid
 +
 +(carmom@doon)-(0)-(11:​06 AM Mon May 21)->
 +(/​usr/​local/​bin)-(60 files, 1.5Mb)-->​ vim rblogin
 +
 +(carmom@doon)-(0)-(11:​06 AM Mon May 21)->
 +(/​usr/​local/​bin)-(60 files, 1.5Mb)-->​ sudo vim rblogin
 +
 +(carmom@doon)-(0)-(11:​07 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ ls -lah
 +total 1.5M
 +drwxr-xr-x. ​ 2 root root 4.0K May 21 11:07 .
 +drwxr-xr-x. 13 root root 4.0K Apr 30 12:26 ..
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 agmrancid
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 alogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 arancid
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 arrancid
 +-rwxr-xr-x. ​ 1 root root  22K Apr 30 12:26 avologin
 +-rwxr-xr-x. ​ 1 root root 9.6K Apr 30 12:26 avorancid
 +-rwxr-xr-x. ​ 1 root root  19K Apr 30 12:26 blogin
 +-rwxr-xr-x. ​ 1 root root 9.9K Apr 30 12:26 brancid
 +-rwxr-xr-x. ​ 1 root root  37K Apr 30 12:26 cat5rancid
 +-rwxr-xr-x. ​ 1 root root  27K Apr 30 12:26 clogin
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 control_rancid
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 cssrancid
 +-rw-r--r--. ​ 1 root root  22K Apr 16 15:41 do_auth.py
 +-rwxr-xr-x. ​ 1 root root  15K Apr 30 12:26 elogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 erancid
 +-rwxr-xr-x. ​ 1 root root  22K Apr 30 12:26 f10rancid
 +-rwxr-xr-x. ​ 1 root root  19K Apr 30 12:26 f5rancid
 +-rwxr-xr-x. ​ 1 root root  21K Apr 30 12:26 flogin
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 fnlogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 fnrancid
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 francid
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 hlogin
 +-rwxr-xr-x. ​ 1 root root  28K Apr 30 12:26 hpuifilter
 +-rwxr-xr-x. ​ 1 root root  20K Apr 30 12:26 hrancid
 +-rwxr-xr-x. ​ 1 root root  15K Apr 30 12:26 htlogin
 +-rwxr-xr-x. ​ 1 root root 9.2K Apr 30 12:26 htrancid
 +-rwxr-xr-x. ​ 1 root root  21K Apr 30 12:26 jerancid
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 jlogin
 +-rwxr-xr-x. ​ 1 root root  23K Apr 30 12:26 jrancid
 +-rwxr-xr-x. ​ 1 root root  25K Apr 30 12:26 lg.cgi
 +-rwxr-xr-x. ​ 1 root root 7.7K Apr 30 12:26 lgform.cgi
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 mrancid
 +-rwxr-xr-x. ​ 1 root root  22K Apr 30 12:26 mrvlogin
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 mrvrancid
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 mtlogin
 +-rwxr-xr-x. ​ 1 root root 8.8K Apr 30 12:26 mtrancid
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 nlogin
 +-rwxr-xr-x. ​ 1 root root  12K Apr 30 12:26 nrancid
 +-rwxr-xr-x. ​ 1 root root  20K Apr 30 12:26 nslogin
 +-rwxr-xr-x. ​ 1 root root 9.5K Apr 30 12:26 nsrancid
 +-rwxr-xr-x. ​ 1 root root  37K Apr 30 12:26 nxrancid
 +-rwxr-xr-x. ​ 1 root root 5.9K Apr 30 12:26 par
 +-rwxr-xr-x. ​ 1 root root  19K Apr 30 12:26 prancid
 +-rwxr-xr-x. ​ 1 root root  69K Apr 30 12:26 rancid
 +-rwxr-xr-x. ​ 1 root root 4.6K Apr 30 12:26 rancid-cvs
 +-rwxr-xr-x. ​ 1 root root 3.7K Apr 30 12:26 rancid-fe
 +-rwxr-xr-x. ​ 1 root root 4.8K Apr 30 12:26 rancid-run
 +-rw-r--r--. ​ 1 root root  14K May 21 11:07 rblogin
 +-rwxr-xr-x. ​ 1 root root  24K Apr 30 12:26 rivlogin
 +-rwxr-xr-x. ​ 1 root root  11K Apr 30 12:26 rivrancid
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 rrancid
 +-rwxr-xr-x. ​ 1 root root  13K Apr 30 12:26 srancid
 +-rwxr-xr-x. ​ 1 root root 276K Apr 16 16:28 tac_plus
 +-rwxr-xr-x. ​ 1 root root  16K Apr 16 16:28 tac_pwd
 +-rwxr-xr-x. ​ 1 root root  25K Apr 30 12:26 tlogin
 +-rwxr-xr-x. ​ 1 root root  16K Apr 30 12:26 tntlogin
 +-rwxr-xr-x. ​ 1 root root 9.8K Apr 30 12:26 tntrancid
 +-rwxr-xr-x. ​ 1 root root 9.8K Apr 30 12:26 trancid
 +-rwxr-xr-x. ​ 1 root root  17K Apr 30 12:26 xrancid
 +-rwxr-xr-x. ​ 1 root root  44K Apr 30 12:26 xrrancid
 +-rwxr-xr-x. ​ 1 root root  14K Apr 30 12:26 zrancid
 +
 +(carmom@doon)-(0)-(11:​07 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ sudo chmod 755 rblogin
 +
 +(carmom@doon)-(0)-(11:​07 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ sudo vim rancid-fe
 +
 +(carmom@doon)-(0)-(11:​08 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ vim rivrancid
 +
 +(carmom@doon)-(0)-(11:​09 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ vim rblogin
 +
 +(carmom@doon)-(0)-(11:​10 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ vim rancid-fe
 +
 +(carmom@doon)-(0)-(11:​10 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ vim rancid-fe
 +
 +(carmom@doon)-(0)-(11:​13 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ vim rancid-fe
 +
 +(carmom@doon)-(0)-(11:​13 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ sudo vim rancid-fe
 +
 +(carmom@doon)-(0)-(11:​13 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ vim rblogin
 +
 +(carmom@doon)-(0)-(11:​21 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ cat rblogin
 +#! /​usr/​bin/​expect --
 +##
 +##
 +## rancid 2.3.2a7
 +## Copyright (C) 1997-2006 by Terrapin Communications,​ Inc.
 +## All rights reserved.
 +##
 +## This software may be freely copied, modified and redistributed
 +## without fee for non-commerical purposes provided that this license
 +## remains intact and unmodified with any RANCID distribution.
 +##
 +## There is no warranty or other guarantee of fitness of this software.
 +## It is provided solely "as is"​. ​ The author(s) disclaim(s) all
 +## responsibility and liability with respect to this software'​s usage
 +## or its effect upon hardware, computer systems, other software, or
 +## anything else.
 +##
 +## Except where noted otherwise, rancid was written by and is maintained by
 +## Henry Kilmer, John Heasley, Andrew Partan, Pete Whiting, and Austin Schutz.
 +##
 +#
 +# The login expect scripts were based on Erik Sherk'​s gwtn, by permission.
 +#
 +# rblogin - Riverbed Steelhead login
 +#
 +
 +# Usage line
 +set usage "​Usage:​ $argv0 \[-c command\] \[-Evar=x\] \[-f cloginrc-file\] \
 +\[-p user-password\] \
 +\[-s script-file\] \[-t timeout\] \[-u username\] \
 +\[-v vty-password\] \[-x command-file\] \
 +\[-y ssh_cypher_type\] router \[router...\]\n"​
 +
 +# env(CLOGIN) may contain:
 +#       x == do not set xterm banner or name
 +
 +# Password file
 +set password_file $env(HOME)/​.cloginrc
 +# Default is to login to the firewall
 +set do_command 0
 +set do_script 0
 +# The default is to look in the password file to find the passwords. ​ This
 +# tracks if we receive them on the command line.
 +set do_passwd 1
 +
 +# Find the user in the ENV, or use the unix userid.
 +if {[ info exists env(CISCO_USER) ]} {
 +    set default_user $env(CISCO_USER)
 +} elseif {[ info exists env(USER) ]} {
 +    set default_user $env(USER)
 +} elseif {[ info exists env(LOGNAME) ]} {
 +    set default_user $env(LOGNAME)
 +} else {
 +    # This uses "​id"​ which I think is portable. ​ At least it has existed
 +    # (without options) on all machines/​OSes I've been on recently -
 +    # unlike whoami or id -nu.
 +    if [ catch {exec id} reason ] {
 +        send_error "​\nError:​ could not exec id: $reason\n"​
 +        exit 1
 +    }
 +    regexp {\(([^)]*)} "​$reason"​ junk default_user
 +}
 +if {[ info exists env(CLOGINRC) ]} {
 +    set password_file $env(CLOGINRC)
 +}
 +
 +# Sometimes firewall take awhile to answer (the default is 10 sec)
 +set timeout 45
 +
 +# Process the command line
 +for {set i 0} {$i < $argc} {incr i} {
 +    set arg [lindex $argv $i]
 +
 +    switch ​ -glob -- $arg {
 +        # Username
 +        -u* -
 +        -U* {
 +            if {! [  regexp .\[uU\](.+) $arg ignore user]} {
 +                incr i
 +                set username [ lindex $argv $i ]
 +            }
 +        # VTY Password
 +        } -p* -
 +        -P* {
 +            if {! [  regexp .\[pP\](.+) $arg ignore userpasswd]} {
 +                incr i
 +                set userpasswd [ lindex $argv $i ]
 +            }
 +            set do_passwd 0
 +        # Environment variable to pass to -s scripts
 +        } -E*
 +        {
 +            if {[ regexp .\[E\](.+)=(.+) $arg ignore varname varvalue]} {
 +                set E$varname $varvalue
 +            } else {
 +                send_user "​\nError:​ invalid format for -E in $arg\n"​
 +                exit 1
 +            }
 +        # Command to run.
 +        } -c* -
 +        -C* {
 +            if {! [  regexp .\[cC\](.+) $arg ignore command]} {
 +                incr i
 +                set command [ lindex $argv $i ]
 +            }
 +            set do_command 1
 +        # Expect script to run.
 +        } -s* -
 +        -S* {
 +            if {! [  regexp .\[sS\](.+) $arg ignore sfile]} {
 +                incr i
 +                set sfile [ lindex $argv $i ]
 +            }
 +            if { ! [ file readable $sfile ] } {
 +                send_user "​\nError:​ Can't read $sfile\n"​
 +                exit 1
 +            }
 +            set do_script 1
 +       # cypher type
 +        } -y* -
 +        -Y* {
 +            if {! [  regexp .\[eE\](.+) $arg ignore cypher]} {
 +                incr i
 +                set cypher [ lindex $argv $i ]
 +            }
 +        # alternate cloginrc file
 +        } -f* -
 +        -F* {
 +            if {! [ regexp .\[fF\](.+) $arg ignore password_file]} {
 +                incr i
 +                set password_file [ lindex $argv $i ]
 +            }
 +        } -t* -
 +        -T* {
 +            incr i
 +            set timeout [ lindex $argv $i ]
 +        } -x* -
 +        -X {
 +            if {! [  regexp .\[xX\](.+) $arg ignore cmd_file]} {
 +                incr i
 +                set cmd_file [ lindex $argv $i ]
 +            }
 +            if [ catch {set cmd_fd [open $cmd_file r]} reason ] {
 +                send_user "​\nError:​ $reason\n"​
 +                exit 1
 +            }
 +            set cmd_text [read $cmd_fd]
 +            close $cmd_fd
 +            set command [join [split $cmd_text \n] \;]
 +            set do_command 1
 +        # Does tacacs automatically enable us?
 +        } -autoenable {
 +            # ignore autoenable
 +        } -* {
 +            send_user "​\nError:​ Unknown argument! $arg\n"​
 +            send_user $usage
 +            exit 1
 +        } default {
 +            break
 +        }
 +    }
 +}
 +# Process firewalls...no firewalls listed is an error.
 +if { $i == $argc } {
 +    send_user "​\nError:​ $usage"​
 +}
 +
 +# Only be quiet if we are running a script (it can log its output
 +# on its own)
 +if { $do_script } {
 +    log_user 0
 +} else {
 +    log_user 1
 +}
 +
 +#
 +# Done configuration/​variable setting. ​ Now run with it...
 +#
 +
 +# Sets Xterm title if interactive...if its an xterm and the user cares
 +proc label { host } {
 +    global env
 +    # if CLOGIN has an '​x'​ in it, don't set the xterm name/banner
 +    if [info exists env(CLOGIN)] {
 +        if {[string first "​x"​ $env(CLOGIN)] != -1} { return }
 +    }
 +    # take host from ENV(TERM)
 +    if [info exists env(TERM)] {
 +        if [regexp \^(xterm|vs) $env(TERM) ignore ] {
 +            send_user "​\033]1;​[lindex [split $host "​."​] 0]\a"
 +            send_user "​\033]2;​$host\a"​
 +        }
 +    }
 +}
 +
 +# This is a helper function to make the password file easier to
 +# maintain. ​ Using this the password file has the form:
 +# add password sl*      pete cow
 +# add password at*      steve
 +# add password *        hanky-pie
 +proc add {var args} { global int_$var ; lappend int_$var $args}
 +proc include {args} {
 +    global env
 +    regsub -all "​(^{|}$)"​ $args {} args
 +    if { [ regexp "​^/"​ $args ignore ] == 0 } {
 +        set args $env(HOME)/​$args
 +    }
 +    source_password_file $args
 +}
 +
 +proc find {var firewall} {
 +    upvar int_$var list
 +    if { [info exists list] } {
 +        foreach line $list {
 +            if { [string match [lindex $line 0] $firewall ] } {
 +                return [lrange $line 1 end]
 +            }
 +        }
 +    }
 +    return {}
 +}
 +
 +# Loads the password file.  Note that as this file is tcl, and that
 +# it is sourced, the user better know what to put in there, as it
 +# could install more than just password info... ​ I will assume however,
 +# that a "bad guy" could just as easy put such code in the clogin
 +# script, so I will leave .cloginrc as just an extention of that script
 +proc source_password_file { password_file } {
 +    global env
 +    if { ! [file exists $password_file] } {
 +        send_user "​\nError:​ password file ($password_file) does not exist\n"​
 +        exit 1
 +    }
 +    file stat $password_file fileinfo
 +    if { [expr ($fileinfo(mode) & 007)] != 0000 } {
 +        send_user "​\nError:​ $password_file must not be world readable/​writable\n"​
 +        exit 1
 +    }
 +    if [ catch {source $password_file} reason ] {
 +        send_user "​\nError:​ $reason\n"​
 +        exit 1
 +    }
 +}
 +
 +# Log into the firewall.
 +# returns: 0 on success, 1 on failure
 +proc login { firewall user userpswd passwd prompt cmethod
 +cyphertype } {
 +    global spawn_id in_proc do_command do_script sshcmd
 +    set in_proc 1
 +    set uprompt_seen 0
 +
 +    # Telnet to the firewall & try to login.
 +    set progs [llength $cmethod]
 +    foreach prog [lrange $cmethod 0 end] {
 +        incr progs -1
 +        if [string match "​telnet*"​ $prog] {
 +            regexp {telnet(:​([^[:​space:​]]+))*} $prog command suffix port
 +            if {"​$port"​ == ""​} {
 +                set retval [ catch {spawn telnet $firewall} reason ]
 +            } else {
 +                set retval [ catch {spawn telnet $firewall $port} reason ]
 +            }
 +            if { $retval } {
 +                send_user "​\nError:​ telnet failed: $reason\n"​
 +                return 1
 +            }
 +        } elseif ![string compare $prog "​ssh"​] {
 +            if [ catch {spawn $sshcmd -c $cyphertype -x -l $user $firewall} reason ] {
 +                send_user "​\nError:​ $sshcmd failed: $reason\n"​
 +                return 1
 +            }
 +        } elseif ![string compare $prog "​rsh"​] {
 +            send_error "​\nError:​ unsupported method: rsh\n"
 +            if { $progs == 0 } {
 +                return 1
 +            }
 +            continue;
 +        } else {
 +            send_user "​\nError:​ unknown connection method: $prog\n"​
 +            return 1
 +        }
 +
 +    sleep 0.3
 +
 +    # This helps cleanup each expect clause.
 +    expect_after {
 +        timeout {
 +            send_user "​\nError:​ TIMEOUT reached\n"​
 +            catch {close}; wait
 +            if { $in_proc} {
 +                return 1
 +            } else {
 +                continue
 +            }
 +        } eof {
 +            send_user "​\nError:​ EOF received\n"​
 +            catch {close}; wait
 +            if { $in_proc} {
 +                return 1
 +            } else {
 +                continue
 +            }
 +        }
 +    }
 +
 +    # Here we get a little tricky. ​ There are several possibilities:​
 +    # the firewall can ask for a username and passwd and then
 +    # talk to the TACACS server to authenticate you, or if the
 +    # TACACS server is not working, then it will use the enable
 +    # passwd. ​ Or, the firewall might not have TACACS turned on,
 +    # then it will just send the passwd.
 +    # if telnet fails with connection refused, try ssh
 +    expect {
 +        "​Connection refused"​ {
 +            send_user "​\nError:​ Connection Refused\n";​ wait; return 1
 +        } eof { send_user "​\nError:​ Couldn'​t login\n";​ wait; return 1
 +        } "​Unknown host\r\n"​ {
 +            expect eof
 +            send_user "​\nError:​ Unknown host\n";​ wait; return 1
 +        } "Host is unreachable"​ {
 +            expect eof
 +            send_user "​\nError:​ Host Unreachable!\n";​ wait; return 1
 +        } "No address associated with name" {
 +            expect eof
 +            send_user "​\nError:​ Unknown host\n";​ wait; return 1
 +        }
 +        -re "Are you sure you want to continue connecting .*" {
 +            send "​yes\r"​
 +            send_user "Host $firewall added to the list of known hosts.\n"​
 +            exp_continue }
 +        -re "Host key not found .* \(yes\/​no\)\?" ​      {
 +            send "​yes\r"​
 +            send_user "Host $firewall added to the list of known hosts.\n"​
 +            exp_continue }
 +        -re "HOST IDENTIFICATION HAS CHANGED.* \(yes\/​no\)\?" ​  {
 +            send "​no\r"​
 +            send_user "​\nError:​ The host key for $firewall has changed. ​ Update the SSH known_hosts file accordingly.\n"​
 +            return 1 }
 +        -re "​Offending key for .* \(yes\/​no\)\?" ​  {
 +            send "​no\r"​
 +            send_user "​\nError:​ host key mismatch for $firewall. ​ Update the SSH known_hosts file accordingly.\n"​
 +            return 1 }
 +        denied ​         { send_user "​\nError:​ Check your passwd for $firewall\n"​
 +                          catch {close}; wait; return 1
 +                        }
 +        " ### Login failed"​ {send_user "​\nError:​ Check your passwd for $firewall\n";​ return 1 }
 +        -re "​@\[^\r\n]+\[Pp]assword:" ​  {
 +                                          # ssh pwd prompt
 +                                          sleep 1
 +                                          send "​$userpswd\r"​
 +                                          exp_continue
 +                                        }
 +        "​\[Pp]assword:" ​                {
 +                                          sleep 1;
 +                                          if {$uprompt_seen == 1} {
 +                                                send "​$userpswd\r"​
 +                                          } else {
 +                                                send "​$passwd\r"​
 +                                          }
 +                                          exp_continue
 +                                        }
 +        -- "​$prompt" ​                   { break; }
 +     }
 +    }
 +    set in_proc 0
 +    return 0
 +}
 +
 +# Run commands given on the command line.
 +proc run_commands { prompt command } {
 +    global in_proc
 +    set in_proc 1
 +
 +    send "​enable\r"​
 +#prompt shoudl now be changed
 +    set prompt { # }
 +    expect -re $prompt {}
 +
 +    # Is this a multi-command?​
 +    if [ string match "​*\;​*"​ "​$command"​ ] {
 +        set commands [split $command \;]
 +        set num_commands [llength $commands]
 +
 +        for {set i 0} {$i < $num_commands} { incr i} {
 +            send "​[subst [lindex $commands $i]]\r"​
 +            expect {
 +                -re "​\[\n\r]+" ​                 { exp_continue }
 +                -re "​$prompt" ​                  {}
 +                -gl "​lines" ​                    { send "​\r"​
 +                                                  exp_continue
 +                                                }
 +            }
 +        }
 +    } else {
 +        send "​[subst $command]\r"​
 +        expect {
 +                -re "​\[\n\r]+" ​                 { exp_continue }
 +                -re "​$prompt" ​                  {}
 +                -gl "​lines" ​                    { send " "
 +                                                  exp_continue
 +                                                }
 +        }
 +    }
 +    send "​exit\r"​
 +    expect {
 +        -re "​$prompt" ​                          {
 +                                                  send "​exit\r"​
 +                                                  exp_continue
 +                                                }
 +        -re "​\[\n\r]+" ​                         { exp_continue }
 +        -gl "​Configuration modified, save?" ​    {
 +                                                  send "​n\r"​
 +                                                  exp_continue
 +                                                }
 +        timeout ​                                { catch {close}; wait
 +                                                  return 0
 +                                                }
 +        eof                                     { return 0 }
 +    }
 +    set in_proc 0
 +}
 +
 +#
 +# For each firewall... (this is main loop)
 +#
 +source_password_file $password_file
 +set in_proc 0
 +foreach firewall [lrange $argv $i end] {
 +    set firewall [string tolower $firewall]
 +    send_user "​$firewall\n"​
 +
 +    set prompt { > }
 +
 +    # Figure out passwords
 +    if { $do_passwd } {
 +      set pswd [find password $firewall]
 +      if { [llength $pswd] == 0 } {
 +        send_user "​\nError:​ no password for $firewall in $password_file.\n"​
 +        continue
 +      }
 +     set passwd [join [lindex $pswd 0] ""​]
 +    } else {
 +        set passwd $userpasswd
 +    }
 +
 +    # Figure out username
 +    if {[info exists username]} {
 +      # command line username
 +      set ruser $username
 +    } else {
 +      set ruser [join [find user $firewall] ""​]
 +      if { "​$ruser"​ == ""​ } { set ruser $default_user }
 +    }
 +
 +    # Figure out username'​s password (if different from the vty password)
 +    if {[info exists userpasswd]} {
 +      # command line username
 +      set userpswd $userpasswd
 +    } else {
 +      set userpswd [join [find userpassword $firewall] ""​]
 +      if { "​$userpswd"​ == ""​ } { set userpswd $passwd }
 +    }
 +
 +
 +    # Figure out cypher type
 +    if {[info exists cypher]} {
 +      # command line cypher type
 +      set cyphertype $cypher
 +    } else {
 +      set cyphertype [find cyphertype $firewall]
 +      if { "​$cyphertype"​ == ""​ } { set cyphertype "​3des"​ }
 +    }
 +
 +    # Figure out connection method
 +    set cmethod [find method $firewall]
 +    if { "​$cmethod"​ == ""​ } { set cmethod {ssh} }
 +
 +    # Figure out the SSH executable name
 +    set sshcmd [find sshcmd $firewall]
 +    if { "​$sshcmd"​ == ""​ } { set sshcmd {ssh} }
 +
 +    # Login to the firewall
 +    if {[login $firewall $ruser $userpswd $passwd $prompt $cmethod $cyphertype]} {
 +        continue
 +    }
 +
 +    if { $do_command } {
 +        if {[run_commands $prompt $command]} {
 +            continue
 +        }
 +    } elseif { $do_script } {
 +        source $sfile
 +        close
 +    } else {
 +        label $firewall
 +        log_user 1
 +        interact
 +    }
 +
 +    # End of for each firewall
 +    wait
 +    sleep 0.3
 +}
 +exit 0
 +
 +(carmom@doon)-(0)-(11:​45 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ cat
 +agmrancid ​      ​f5rancid ​       mrvlogin ​       rivlogin
 +alogin ​         flogin ​         mrvrancid ​      ​rivrancid
 +arancid ​        ​fnlogin ​        ​mtlogin ​        ​rrancid
 +arrancid ​       fnrancid ​       mtrancid ​       srancid
 +avologin ​       francid ​        ​nlogin ​         tac_plus
 +avorancid ​      ​hlogin ​         nrancid ​        ​tac_pwd
 +blogin ​         hpuifilter ​     nslogin ​        ​tlogin
 +brancid ​        ​hrancid ​        ​nsrancid ​       tntlogin
 +cat5rancid ​     htlogin ​        ​nxrancid ​       tntrancid
 +clogin ​         htrancid ​       par             ​trancid
 +control_rancid ​ jerancid ​       prancid ​        ​xrancid
 +cssrancid ​      ​jlogin ​         rancid ​         xrrancid
 +do_auth.py ​     jrancid ​        ​rancid-cvs ​     zrancid
 +elogin ​         lg.cgi ​         rancid-fe
 +erancid ​        ​lgform.cgi ​     rancid-run
 +f10rancid ​      ​mrancid ​        ​rblogin
 +
 +(carmom@doon)-(0)-(11:​45 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ cat tlogin
 +#! /​usr/​bin/​expect --
 +##
 +## $Id: tlogin.in 2376 2012-01-31 22:42:14Z heas $
 +##
 +## rancid 2.3.8
 +## Copyright (c) 1997-2011 by Terrapin Communications,​ Inc.
 +## All rights reserved.
 +##
 +## This code is derived from software contributed to and maintained by
 +## Terrapin Communications,​ Inc. by Henry Kilmer, John Heasley, Andrew Partan,
 +## Pete Whiting, Austin Schutz, and Andrew Fort.
 +##
 +## Redistribution and use in source and binary forms, with or without
 +## modification,​ are permitted provided that the following conditions
 +## are met:
 +## 1. Redistributions of source code must retain the above copyright
 +##    notice, this list of conditions and the following disclaimer.
 +## 2. Redistributions in binary form must reproduce the above copyright
 +##    notice, this list of conditions and the following disclaimer in the
 +##    documentation and/or other materials provided with the distribution.
 +## 3. All advertising materials mentioning features or use of this software
 +##    must display the following acknowledgement:​
 +##        This product includes software developed by Terrapin Communications,​
 +##        Inc. and its contributors for RANCID.
 +## 4. Neither the name of Terrapin Communications,​ Inc. nor the names of its
 +##    contributors may be used to endorse or promote products derived from
 +##    this software without specific prior written permission.
 +## 5. It is requested that non-binding fixes and modifications be contributed
 +##    back to Terrapin Communications,​ Inc.
 +##
 +## THIS SOFTWARE IS PROVIDED BY Terrapin Communications,​ INC. AND CONTRIBUTORS
 +## ``AS IS''​ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 +## TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 +## PURPOSE ARE DISCLAIMED. ​ IN NO EVENT SHALL THE COMPANY OR CONTRIBUTORS
 +## BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 +## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 +## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 +## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 +## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 +## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 +## POSSIBILITY OF SUCH DAMAGE.
 +#
 +# The login expect scripts were based on Erik Sherk'​s gwtn, by permission.
 +#
 +# tlogin - Netopis login
 +#
 +# Modified by Ed Ravin for Netopia.
 +
 +# Usage line
 +set usage "​Usage:​ $argv0 \[-dSV\] \[-autoenable\] \[-noenable\] \[-c command\] \
 +\[-Evar=x\] \[-e enable-password\] \[-f cloginrc-file\] \[-p user-password\] \
 +\[-s script-file\] \[-t timeout\] \[-u username\] \
 +\[-V\] \[-v vty-password\] \[-w enable-username\] \[-x command-file\] \
 +\[-y ssh_cypher_type\] router \[router...\]\n"​
 +
 +# env(CLOGIN) may contain:
 +#       x == do not set xterm banner or name
 +
 +# Password file
 +set password_file $env(HOME)/​.cloginrc
 +# Default is to login to the router
 +set do_command 0
 +set do_script 0
 +# The default is to automatically enable
 +set avenable 1
 +# The default is that you login non-enabled (tacacs can have you login already
 +# enabled)
 +set avautoenable 0
 +# The default is to look in the password file to find the passwords. ​ This
 +# tracks if we receive them on the command line.
 +set do_passwd 1
 +set do_enapasswd 1
 +# Sometimes routers take awhile to answer (the default is 10 sec)
 +set timeoutdflt 45
 +# attempt at platform switching.
 +set platform ""​
 +
 +# Find the user in the ENV, or use the unix userid.
 +if {[ info exists env(CISCO_USER) ] } {
 +    set default_user $env(CISCO_USER)
 +} elseif {[ info exists env(USER) ]} {
 +    set default_user $env(USER)
 +} elseif {[ info exists env(LOGNAME) ]} {
 +    set default_user $env(LOGNAME)
 +} else {
 +    # This uses "​id"​ which I think is portable. ​ At least it has existed
 +    # (without options) on all machines/​OSes I've been on recently -
 +    # unlike whoami or id -nu.
 +    if [ catch {exec id} reason ] {
 +        send_error "​\nError:​ could not exec id: $reason\n"​
 +        exit 1
 +    }
 +    regexp {\(([^)]*)} "​$reason"​ junk default_user
 +}
 +
 +# Process the command line
 +for {set i 0} {$i < $argc} {incr i} {
 +    set arg [lindex $argv $i]
 +
 +    switch ​ -glob -- $arg {
 +        } -d {
 +            exp_internal 1
 +        # Username
 +        } -u* {
 +            if {! [  regexp .\[uU\](.+) $arg ignore user]} {
 +                incr i
 +                set username [ lindex $argv $i ]
 +            }
 +        # VTY Password
 +        } -p* {
 +            if {! [  regexp .\[pP\](.+) $arg ignore userpasswd]} {
 +                incr i
 +                set userpasswd [ lindex $argv $i ]
 +            }
 +            set do_passwd 0
 +        # ssh passphrase
 +        } -r* {
 +            # ignore -r
 +        # VTY Password
 +        } -v* {
 +            if {! [  regexp .\[vV\](.+) $arg ignore passwd]} {
 +                incr i
 +                set passwd [ lindex $argv $i ]
 +            }
 +            set do_passwd 0
 +        # Enable Username
 +        } -w* {
 +            if {! [  regexp .\[wW\](.+) $arg ignore enauser]} {
 +                incr i
 +                set enausername [ lindex $argv $i ]
 +            }
 +        # Environment variable to pass to -s scripts
 +        } -E* {
 +            if {[ regexp .\[E\](.+)=(.+) $arg ignore varname varvalue]} {
 +                set E$varname $varvalue
 +            } else {
 +                send_user "​\nError:​ invalid format for -E in $arg\n"​
 +                exit 1
 +            }
 +        # Enable Password
 +        } -e* {
 +            if {! [  regexp .\[e\](.+) $arg ignore enapasswd]} {
 +                incr i
 +                set enapasswd [ lindex $argv $i ]
 +            }
 +            set do_enapasswd 0
 +        # Command to run.
 +        } -c* {
 +            if {! [  regexp .\[cC\](.+) $arg ignore command]} {
 +                incr i
 +                set command [ lindex $argv $i ]
 +            }
 +            set do_command 1
 +        # Expect script to run.
 +        } -s* {
 +            if {! [  regexp .\[sS\](.+) $arg ignore sfile]} {
 +                incr i
 +                set sfile [ lindex $argv $i ]
 +            }
 +            if { ! [ file readable $sfile ] } {
 +                send_user "​\nError:​ Can't read $sfile\n"​
 +                exit 1
 +            }
 +            set do_script 1
 +        # save config on exit
 +        } -S* {
 +            set do_saveconfig 1
 +        # 'ssh -c' cypher type
 +        } -y* {
 +            if {! [  regexp .\[eE\](.+) $arg ignore cypher]} {
 +                incr i
 +                set cypher [ lindex $argv $i ]
 +            }
 +        # alternate cloginrc file
 +        } -f* {
 +            if {! [ regexp .\[fF\](.+) $arg ignore password_file]} {
 +                incr i
 +                set password_file [ lindex $argv $i ]
 +            }
 +        # Timeout
 +        } -t* {
 +            if {! [ regexp .\[tT\](.+) $arg ignore timeout]} {
 +                incr i
 +                set timeoutdflt [ lindex $argv $i ]
 +            }
 +        # Command file
 +        } -x* {
 +            if {! [  regexp .\[xX\](.+) $arg ignore cmd_file]} {
 +                incr i
 +                set cmd_file [ lindex $argv $i ]
 +            }
 +            if [ catch {set cmd_fd [open $cmd_file r]} reason ] {
 +                send_user "​\nError:​ $reason\n"​
 +                exit 1
 +            }
 +            set cmd_text [read $cmd_fd]
 +            close $cmd_fd
 +            set command [join [split $cmd_text \n] \;]
 +            set do_command 1
 +        # Version string
 +        } -V* {
 +            send_user "​rancid 2.3.8\n"​
 +            exit 0
 +        # Do we enable?
 +        } -noenable {
 +            set avenable 0
 +        # Does tacacs automatically enable us?
 +        } -autoenable {
 +            set avautoenable 1
 +            set avenable 0
 +        } -* {
 +            send_user "​\nError:​ Unknown argument! $arg\n"​
 +            send_user $usage
 +            exit 1
 +        } default {
 +            break
 +        }
 +    }
 +}
 +# Process routers...no routers listed is an error.
 +if { $i == $argc } {
 +    send_user "​\nError:​ $usage"​
 +}
 +
 +# Only be quiet if we are running a script (it can log its output
 +# on its own)
 +if { $do_script } {
 +    log_user 0
 +} else {
 +    log_user 1
 +}
 +
 +#
 +# Done configuration/​variable setting. ​ Now run with it...
 +#
 +
 +# Sets Xterm title if interactive...if its an xterm and the user cares
 +proc label { host } {
 +    global env
 +    # if CLOGIN has an '​x'​ in it, don't set the xterm name/banner
 +    if [info exists env(CLOGIN)] {
 +        if {[string first "​x"​ $env(CLOGIN)] != -1} { return }
 +    }
 +    # take host from ENV(TERM)
 +    if [info exists env(TERM)] {
 +        if [regexp \^(xterm|vs) $env(TERM) ignore ] {
 +            send_user "​\033]1;​[lindex [split $host "​."​] 0]\a"
 +            send_user "​\033]2;​$host\a"​
 +        }
 +    }
 +}
 +
 +# This is a helper function to make the password file easier to
 +# maintain. ​ Using this the password file has the form:
 +# add password sl*      pete cow
 +# add password at*      steve
 +# add password *        hanky-pie
 +proc add {var args} { global int_$var ; lappend int_$var $args}
 +proc include {args} {
 +    global env
 +    regsub -all "​(^{|}$)"​ $args {} args
 +    if { [ regexp "​^/"​ $args ignore ] == 0 } {
 +        set args $env(HOME)/​$args
 +    }
 +    source_password_file $args
 +}
 +
 +proc find {var router} {
 +    upvar int_$var list
 +    if { [info exists list] } {
 +        foreach line $list {
 +            if { [string match [lindex $line 0] $router ] } {
 +                return [lrange $line 1 end]
 +            }
 +        }
 +    }
 +    return {}
 +}
 +
 +# Loads the password file.  Note that as this file is tcl, and that
 +# it is sourced, the user better know what to put in there, as it
 +# could install more than just password info... ​ I will assume however,
 +# that a "bad guy" could just as easy put such code in the clogin
 +# script, so I will leave .cloginrc as just an extention of that script
 +proc source_password_file { password_file } {
 +    global env
 +    if { ! [file exists $password_file] } {
 +        send_user "​\nError:​ password file ($password_file) does not exist\n"​
 +        exit 1
 +    }
 +    file stat $password_file fileinfo
 +    if { [expr ($fileinfo(mode) & 007)] != 0000 } {
 +        send_user "​\nError:​ $password_file must not be world readable/​writable\n"​
 +        exit 1
 +    }
 +    if [ catch {source $password_file} reason ] {
 +        send_user "​\nError:​ $reason\n"​
 +        exit 1
 +    }
 +}
 +
 +# Log into the router.
 +proc login { router user userpswd passwd enapasswd cmethod cyphertype } {
 +    global spawn_id in_proc do_command do_script platform
 +    global prompt u_prompt p_prompt e_prompt sshcmd usercmd usercmd_chat
 +        global otpinuse
 +    set in_proc 1
 +    set uprompt_seen 0
 +
 +    # try each of the connection methods in $cmethod until one is successful
 +    set progs [llength $cmethod]
 +    foreach prog [lrange $cmethod 0 end] {
 +        if [string match "​telnet*"​ $prog] {
 +            regexp {telnet(:​([^[:​space:​]]+))*} $prog command suffix port
 +            if {"​$port"​ == ""​} {
 +                set retval [ catch {spawn telnet $router} reason ]
 +            } else {
 +                set retval [ catch {spawn telnet $router $port} reason ]
 +            }
 +            if { $retval } {
 +                send_user "​\nError:​ telnet failed: $reason\n"​
 +                exit 1
 +            }
 +        } elseif [string match "​ssh*"​ $prog] {
 +            regexp {ssh(:​([^[:​space:​]]+))*} $prog command suffix port
 +            set cmd $sshcmd
 +            if {"​$port"​ != ""​} {
 +                set cmd "$cmd -p $port"
 +            }
 +            set retval [ catch {eval spawn [split "$cmd -c $cyphertype -x -l $user $router"​ { }]} reason ]
 +            if { $retval } {
 +                send_user "​\nError:​ $cmd failed: $reason\n"​
 +                exit 1
 +            }
 +        } elseif [string match "​usercmd"​ $prog] { # user supplies connect cmd
 +                set retval [ catch {eval spawn $usercmd} reason ]
 +                if { $retval } {
 +                    send_user "​\nError:​ '​$usercmd'​ failed: $reason\n"​
 +                    exit 1
 +                }
 +                if { [llength $usercmd_chat] > 0 } {
 +                        #send_user "​\nExecuting usercmd_chat:​ $usercmd_chat\n"​
 +                        sleep 0.3
 +                        foreach {i j} $usercmd_chat {
 +                                expect {
 +                                        -re $i { eval send -- "​\"​$j\""​}
 +                                        timeout { send "​\r";​ send_user "​\nTimeout in usercmd_chat waiting for -re $i: punting with CR\n"; break }
 +                                }
 +                        }
 +                }
 +        } elseif ![string compare $prog "​rsh"​] {
 +            if [ catch {spawn rsh -l $user $router} reason ] {
 +                send_user "​\nError:​ rsh failed: $reason\n"​
 +                exit 1
 +            }
 +        } else {
 +            puts "​\nError:​ unknown connection method: $prog"
 +            return 1
 +        }
 +        incr progs -1
 +        sleep 0.3
 +
 +        # This helps cleanup each expect clause.
 +        expect_after {
 +            timeout {
 +                send_user "​\nError:​ TIMEOUT reached\n"​
 +                catch {close}; wait
 +                if { $in_proc} {
 +                    return 1
 +                } else {
 +                    continue
 +                }
 +            } eof {
 +                send_user "​\nError:​ EOF received\n"​
 +                catch {close}; wait
 +                if { $in_proc} {
 +                    return 1
 +                } else {
 +                    continue
 +                }
 +            }
 +        }
 +
 +    # Here we get a little tricky. ​ There are several possibilities:​
 +    # the router can ask for a username and passwd and then
 +    # talk to the TACACS server to authenticate you, or if the
 +    # TACACS server is not working, then it will use the enable
 +    # passwd. ​ Or, the router might not have TACACS turned on,
 +    # then it will just send the passwd.
 +    # if telnet fails with connection refused, try ssh
 +    expect {
 +        -re "​(Connection refused|Secure connection \[^\n\r]+ refused)"​ {
 +            catch {close}; wait
 +            if !$progs {
 +                send_user "​\nError:​ Connection Refused ($prog): $router\n"​
 +                return 1
 +            }
 +        }
 +        -re "​(Connection closed by|Connection to \[^\n\r]+ closed)"​ {
 +            catch {close}; wait
 +            if !$progs {
 +                send_user "​\nError:​ Connection closed ($prog): $router\n"​
 +                return 1
 +            }
 +        }
 +        eof { send_user "​\nError:​ Couldn'​t login: $router\n";​ wait; return 1 }
 +        -nocase "​unknown host\r"​ {
 +            catch {close};
 +            send_user "​\nError:​ Unknown host $router\n";​ wait; return 1
 +        }
 +        "Host is unreachable"​ {
 +            catch {close};
 +            send_user "​\nError:​ Host Unreachable:​ $router\n";​ wait; return 1
 +        }
 +        "No address associated with name" {
 +            catch {close};
 +            send_user "​\nError:​ Unknown host $router\n";​ wait; return 1
 +        }
 +        -re "(Host key not found |The authenticity of host .* be established).* \\(yes/​no\\)\\?"​ {
 +            send "​yes\r"​
 +            send_user "​\nHost $router added to the list of known hosts.\n"​
 +            exp_continue }
 +        -re "HOST IDENTIFICATION HAS CHANGED.* \\(yes/​no\\)\\?"​ {
 +            send "​no\r"​
 +            send_user "​\nError:​ The host key for $router has changed. ​ Update the SSH known_hosts file accordingly.\n"​
 +            return 1 }
 +        -re "HOST IDENTIFICATION HAS CHANGED\[^\n\r]+"​ {
 +            send_user "​\nError:​ The host key for $router has changed. ​ Update the SSH known_hosts file accordingly.\n"​
 +            return 1
 +        }
 +        -re "​Offending key for .* \\(yes/​no\\)\\?"​ {
 +            send "​no\r"​
 +            send_user "​\nError:​ host key mismatch for $router. ​ Update the SSH known_hosts file accordingly.\n"​
 +            return 1 }
 +        -re "​(denied|Sorry)" ​   {
 +                                  send_user "​\nError:​ Check your passwd for $router\n"​
 +                                  catch {close}; wait; return 1
 +                                }
 +        "Login failed" ​         {
 +                                  send_user "​\nError:​ Check your passwd for $router\n"​
 +                                  return 1
 +                                }
 +        -re "% (Bad passwords|Authentication failed)" ​  {
 +                                  send_user "​\nError:​ Check your passwd for $router\n"​
 +                                  return 1
 +                                }
 +        "Press any key to continue."​ {
 +                                  # send_user "​Pressing the ANY key\n"
 +                                  send "​\r"​
 +                                  exp_continue
 +                                }
 +        -re "Enter Selection: " {
 +                                  # Catalyst 1900s have some lame menu.  Enter
 +                                  # K to reach a command-line.
 +                                  send "​K\r"​
 +                                  exp_continue;​
 +                                }
 +        -re "​Netopia.*always start from this main screen"​ {
 +                # send control-N to escape from the Playskool menu
 +                send -- "​\x0e"​
 +                set platform "​netopia"​
 +                set prompt "#"​
 +                set autoenable 1
 +                return 0
 +        }
 +        -re "​@\[^\r\n]+ $p_prompt" ​     {
 +                                          # ssh pwd prompt
 +                                          sleep 1
 +                                          send -- "​$userpswd\r"​
 +                                          exp_continue
 +                                        }
 +        -re "​$u_prompt" ​        {
 +                                  send -- "​$user\r"​
 +                                  set uprompt_seen 1
 +                                  exp_continue
 +                                }
 +        -re "​(s/​key|otp-\[0-9a-zA-Z]+) +\[0-9]+ +\[-0-9a-zA-Z]+\[ \r\n]" {
 +                if { !$otpinuse} {
 +                        exp_continue
 +                }
 +                set challenge $expect_out(0,​string)
 +                regsub {[ \r\n]$} $challenge {} challenge
 +                if [ catch {exec otphelper $router "​$challenge"​} userpswd ] {
 +                        send_error "​\nError:​ login: '​otphelper $router $challenge'​ failed.\nRun otphelper standalone to diagnose further.\n"​
 +                        exit 1
 +                }
 +                exp_continue
 +        }
 +        -re "​$p_prompt" ​        {
 +                                  sleep 1
 +                                  if {$uprompt_seen == 1} {
 +                                        send -- "​$userpswd\r"​
 +                                  } else {
 +                                        send -- "​$passwd\r"​
 +                                  }
 +                                  exp_continue
 +                                }
 +        -re "​$prompt" ​          { break; }
 +        "Login invalid" ​        {
 +                                  send_user "​\nError:​ Invalid login: $router\n";​
 +                                  catch {close}; wait; return 1
 +                                }
 +     }
 +    }
 +
 +    set in_proc 0
 +    return 0
 +}
 +
 +# Enable
 +proc do_enable { enauser enapasswd } {
 +    global prompt in_proc
 +    global u_prompt e_prompt
 +        global router otpinuse
 +    set in_proc 1
 +
 +    send "​enable\r"​
 +    expect {
 +        -re "​(s/​key|otp-\[0-9a-zA-Z]+) +\[0-9]+ +\[-0-9a-zA-Z]+\[ \r\n]" {
 +                if { !$otpinuse} {
 +                        exp_continue
 +                }
 +                set challenge $expect_out(0,​string)
 +                regsub {[ \r\n]$} $challenge {} challenge
 +                if [ catch {exec otphelper $router "​$challenge"​} enapasswd ] {
 +                        send_error "​\nError:​ enable: '​otphelper $router $challenge'​ failed.\nRun otphelper standalone to diagnose further.\n"​
 +                        exit 1
 +                }
 +                exp_continue
 +        }
 +        -re "​$u_prompt"​ { send -- "​$enauser\r";​ exp_continue}
 +        -re "​$e_prompt"​ { send -- "​$enapasswd\r";​ exp_continue}
 +        "#" ​            { set prompt "#"​ }
 +        "​(enable)" ​     { set prompt "> (enable) " }
 +        -re "​(denied|Sorry|Incorrect)" ​ {
 +                          # % Access denied - from local auth and poss. others
 +                          send_user "​\nError:​ Check your Enable passwd\n";​
 +                          return 1
 +                        }
 +        "% Error in authentication"​ {
 +                          send_user "​\nError:​ Check your Enable passwd\n"​
 +                          return 1
 +                        }
 +        "% Bad passwords"​ {
 +                          send_user "​\nError:​ Check your Enable passwd\n"​
 +                          return 1
 +                        }
 +    }
 +    # We set the prompt variable (above) so script files don't need
 +    # to know what it is.
 +    set in_proc 0
 +    return 0
 +}
 +
 +# Run commands given on the command line.
 +proc run_commands { prompt command } {
 +    global in_proc platform
 +    set in_proc 1
 +
 +    # If the prompt is (enable), then we are on a switch and the
 +    # command is "set length 0"; otherwise its "term length 0".
 +    # skip if its an extreme (since the pager can not be disabled on a
 +    # per-vty basis).
 +    if { [ string compare "​extreme"​ "​$platform"​ ] } {
 +        if [ regexp -- "​.*>​ .*enable"​ "​$prompt"​ ] {
 +            send "set length 0\r"
 +            # This is ugly, but reduces code duplication,​ allowing the
 +            # subsequent expects to handle everything as normal.
 +            set command "set logging session disable;​$command"​
 +        } elseif { ![ string compare "​netopia"​ "​$platform"​ ] } {
 +                # kludge - should instead skip re-sensing prompt if platform netopia
 +                set prompt "#"​
 +        } else {
 +            send "term length 0\r"
 +        }
 +        # escape any parens in the prompt, such as "​(enable)"​
 +        regsub -all {[)(]} $prompt {\\&} reprompt
 +        # match cisco config mode prompts too, such as router(config-if)#,​
 +        # but catalyst does not change in this fashion.
 +        regsub -all {^(.{1,​14}).*([#>​])$} $reprompt {\1([^#>​\r\n]+)?​[#>​](\\([^)\\r\\n]+\\))?​} reprompt
 +        expect {
 +            -re $reprompt ​      {}
 +            -re "​\[\n\r]+" ​     { exp_continue }
 +        }
 +    } else {
 +        regsub -all "​\[)(]"​ $prompt {\\&} reprompt
 +    }
 +
 +    # this is the only way i see to get rid of more prompts in o/p..grrrrr
 +    log_user 0
 +
 +    set commands [split $command \;]
 +    set num_commands [llength $commands]
 +    # the pager can not be turned off on the PIX, so we have to look
 +    # for the "​More"​ prompt. ​ the extreme is equally obnoxious, with a
 +    # global switch in the config.
 +    for {set i 0} {$i < $num_commands} { incr i} {
 +        send -- "​[subst -nocommands [lindex $commands $i]]\r"​
 +        expect {
 +            -re "​\b+" ​                          { exp_continue }
 +            -re "​^\[^\n\r *]*$reprompt" ​        { send_user -- "​$expect_out(buffer)"​
 +                                                }
 +            -re "​^\[^\n\r]*$reprompt." ​         { send_user -- "​$expect_out(buffer)"​
 +                                                  exp_continue }
 +            -re "​\[\n\r]+" ​                     { send_user -- "​$expect_out(buffer)"​
 +                                                  exp_continue }
 +            -re "​\[^\r\n]*Press <​SPACE>​ to cont\[^\r\n]*" ​      {
 +                                                  send " "
 +                                                  # bloody ^[[2K after " "
 +                                                  expect {
 +                                                        -re "​^\[^\r\n]*\r"​ {}
 +                                                        }
 +                                                  exp_continue
 +                                                }
 +            -re "^ *--More--\[^\n\r]*" ​         {
 +                                                  send " "
 +                                                  exp_continue }
 +            -re "​^<​-+ More -+>​\[^\n\r]*" ​       {
 +                                                  send_user -- "​$expect_out(buffer)"​
 +                                                  send " "
 +                                                  exp_continue }
 +        }
 +    }
 +    log_user 1
 +
 +    if { [ string compare "​extreme"​ "​$platform"​ ] } {
 +        send "​exit\r"​
 +    } else {
 +        send "​quit\r"​
 +    }
 +    expect {
 +        -re "​^\[^\n\r *]*$reprompt" ​            {
 +                                                  # the Cisco CE and Jnx ERX
 +                                                  # return to non-enabled mode
 +                                                  # on exit in enabled mode.
 +                                                  send "​exit\r"​
 +                                                  exp_continue;​
 +                                                }
 +        "Do you wish to save your configuration changes"​ {
 +                                                  send "​n\r"​
 +                                                  exp_continue
 +                                                }
 +        -re "​\[\n\r]+" ​                         { exp_continue }
 +        timeout ​                                { close; return 0 }
 +        eof                                     { return 0 }
 +    }
 +    set in_proc 0
 +}
 +
 +#
 +# For each router... (this is main loop)
 +#
 +source_password_file $password_file
 +set in_proc 0
 +foreach router [lrange $argv $i end] {
 +    set router [string tolower $router]
 +    send_user "​$router\n"​
 +
 +    # device timeout
 +    set timeout [find timeout $router]
 +    if { [llength $timeout] == 0 } {
 +        set timeout $timeoutdflt
 +    }
 +
 +    # Figure out prompt.
 +    # Since autoenable is off by default, if we have it defined, it
 +    # was done on the command line. If it is not specifically set on the
 +    # command line, check the password file.
 +    if $avautoenable {
 +        set autoenable 1
 +        set enable 0
 +        set prompt "(#| \\(enable\\))"​
 +    } else {
 +        set ae [find autoenable $router]
 +        if { "​$ae"​ == "​1"​ } {
 +            set autoenable 1
 +            set enable 0
 +            set prompt "(#| \\(enable\\))"​
 +        } else {
 +            set autoenable 0
 +            set enable $avenable
 +            set prompt ">"​
 +        }
 +    }
 +
 +    # look for noenable option in .cloginrc
 +    if { [find noenable $router] == "​1"​ } {
 +        set enable 0
 +    }
 +
 +        # is OTP in use?  If so, bypass password checks
 +        set otpinuse 0
 +        if { [find otp_secret $router] != ""​ } {
 +                set otpinuse 1
 +        }
 +
 +    # Figure out passwords
 +    if { $do_passwd || $do_enapasswd } {
 +      set pswd [find password $router]
 +      if { [llength $pswd] == 0 && !$otpinuse} {
 +        send_user "​\nError:​ no password for $router in $password_file.\n"​
 +        continue
 +      }
 +      if { $enable && $do_enapasswd && $autoenable == 0 && [llength $pswd] < 2  && !$otpinuse } {
 +        send_user "​\nError:​ no enable password for $router in $password_file.\n"​
 +        continue
 +      }
 +      set passwd [join [lindex $pswd 0] ""​]
 +      set enapasswd [join [lindex $pswd 1] ""​]
 +    }
 +
 +    # Figure out username
 +    if {[info exists username]} {
 +      # command line username
 +      set ruser $username
 +    } else {
 +      set ruser [join [find user $router] ""​]
 +      if { "​$ruser"​ == ""​ } { set ruser $default_user }
 +    }
 +
 +    # Figure out username'​s password (if different from the vty password)
 +    if {[info exists userpasswd]} {
 +      # command line username
 +      set userpswd $userpasswd
 +    } else {
 +      set userpswd [join [find userpassword $router] ""​]
 +      if { "​$userpswd"​ == ""​ } { set userpswd $passwd }
 +    }
 +
 +    # Figure out enable username
 +    if {[info exists enausername]} {
 +      # command line enausername
 +      set enauser $enausername
 +    } else {
 +      set enauser [join [find enauser $router] ""​]
 +      if { "​$enauser"​ == ""​ } { set enauser $ruser }
 +    }
 +
 +    # Figure out prompts
 +    set u_prompt [find userprompt $router]
 +    if { "​$u_prompt"​ == ""​ } {
 +        set u_prompt "​(Username|Login|login|user name|name):"​
 +    } else {
 +        set u_prompt [join [lindex $u_prompt 0] ""​]
 +    }
 +    set p_prompt [find passprompt $router]
 +    if { "​$p_prompt"​ == ""​ } {
 +        set p_prompt "​(\[Pp]assword|passwd):"​
 +    } else {
 +        set p_prompt [join [lindex $p_prompt 0] ""​]
 +    }
 +    set e_prompt [find enableprompt $router]
 +    if { "​$e_prompt"​ == ""​ } {
 +        set e_prompt "​\[Pp]assword:"​
 +    } else {
 +        set e_prompt [join [lindex $e_prompt 0] ""​]
 +    }
 +
 +    # Figure out cypher type
 +    if {[info exists cypher]} {
 +        # command line cypher type
 +        set cyphertype $cypher
 +    } else {
 +        set cyphertype [find cyphertype $router]
 +        if { "​$cyphertype"​ == ""​ } { set cyphertype "​3des"​ }
 +    }
 +
 +    # Figure out connection method
 +    set cmethod [find method $router]
 +    if { "​$cmethod"​ == ""​ } { set cmethod {{telnet} {ssh}} }
 +
 +    # Figure out the SSH executable name
 +    set sshcmd [join [lindex [find sshcmd $router] 0] ""​]
 +    if { "​$sshcmd"​ == ""​ } { set sshcmd {ssh} }
 +
 +    # If user provides a router-specific connection method, use it
 +    set usercmd [find usercmd $router]
 +    set usercmd_chat [find usercmd_chat $router]
 +
 +    # Login to the router
 +    if {[login $router $ruser $userpswd $passwd $enapasswd $cmethod $cyphertype]} {
 +        continue
 +    }
 +    if { $enable } {
 +        if {[do_enable $enauser $enapasswd]} {
 +            if { $do_command || $do_script } {
 +                close; wait
 +                continue
 +            }
 +        }
 +    }
 +    # we are logged in, now figure out the full prompt
 +    send "​\r"​
 +    expect {
 +        -re "​\[\r\n]+" ​         { exp_continue;​ }
 +        -re "​^(.+:​)1 $prompt" ​  { # stoopid extreme cmd-line numbers and
 +                                  # prompt based on state of config changes,
 +                                  # which may have an * at the beginning.
 +                                  set junk $expect_out(1,​string)
 +                                  regsub -all "^\\\* " $expect_out(1,​string) {} junk
 +                                  set prompt ".? ?​$junk\[0-9]+ $expect_out(2,​string)";​
 +                                  set platform "​extreme"​
 +                                }
 +        -re "​^.+$prompt" ​       { set junk $expect_out(0,​string);​
 +                                  regsub -all "​\[\]\[]"​ $junk {\\&} prompt;
 +                                }
 +        -re "​^.+>​ \\\(enable\\\)" ​      {
 +                                  set junk $expect_out(0,​string);​
 +                                  regsub -all "​\[\]\[]"​ $junk {\\&} prompt;
 +                                }
 +    }
 +
 +    if { $do_command } {
 +        if {[run_commands $prompt $command]} {
 +            continue
 +        }
 +    } elseif { $do_script } {
 +        # If the prompt is (enable), then we are on a switch and the
 +        # command is "set length 0"; otherwise its "term length 0".
 +        if [ regexp -- "​.*>​ .*enable"​ "​$prompt"​ ] {
 +            send "set length 0\r"
 +            send "set logging session disable\r"​
 +        } elseif { ![ string compare "​netopia"​ "​$platform"​ ] } {
 +                # do nothing
 +        } else {
 +            send "term length 0\r"
 +        }
 +        expect -re $prompt ​     {}
 +        source $sfile
 +        close
 +    } else {
 +        label $router
 +        log_user 1
 +        interact
 +    }
 +
 +    # End of for each router
 +    wait
 +    sleep 0.3
 +}
 +exit 0
 +
 +(carmom@doon)-(0)-(11:​45 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ ls
 +agmrancid ​ avologin ​  ​cat5rancid ​     do_auth.py ​ f5rancid ​ francid ​    ​htlogin ​  ​jrancid ​    ​mrvlogin ​  ​nlogin ​   nxrancid ​ rancid-cvs ​ rivlogin ​  ​tac_plus ​ tntrancid ​ zrancid
 +alogin ​    ​avorancid ​ clogin ​         elogin ​     flogin ​   hlogin ​     htrancid ​ lg.cgi ​     mrvrancid ​ nrancid ​  ​par ​      ​rancid-fe ​  ​rivrancid ​ tac_pwd ​  ​trancid
 +arancid ​   blogin ​    ​control_rancid ​ erancid ​    ​fnlogin ​  ​hpuifilter ​ jerancid ​ lgform.cgi ​ mtlogin ​   nslogin ​  ​prancid ​  ​rancid-run ​ rrancid ​   tlogin ​   xrancid
 +arrancid ​  ​brancid ​   cssrancid ​      ​f10rancid ​  ​fnrancid ​ hrancid ​    ​jlogin ​   mrancid ​    ​mtrancid ​  ​nsrancid ​ rancid ​   rblogin ​    ​srancid ​   tntlogin ​ xrrancid
 +
 +(carmom@doon)-(0)-(11:​47 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ cat francid
 +#! /​usr/​bin/​perl
 +##
 +## $Id: francid.in 2279 2011-01-31 22:41:00Z heas $
 +##
 +## rancid 2.3.8
 +## Copyright (c) 1997-2008 by Terrapin Communications,​ Inc.
 +## All rights reserved.
 +##
 +## This code is derived from software contributed to and maintained by
 +## Terrapin Communications,​ Inc. by Henry Kilmer, John Heasley, Andrew Partan,
 +## Pete Whiting, Austin Schutz, and Andrew Fort.
 +##
 +## Redistribution and use in source and binary forms, with or without
 +## modification,​ are permitted provided that the following conditions
 +## are met:
 +## 1. Redistributions of source code must retain the above copyright
 +##    notice, this list of conditions and the following disclaimer.
 +## 2. Redistributions in binary form must reproduce the above copyright
 +##    notice, this list of conditions and the following disclaimer in the
 +##    documentation and/or other materials provided with the distribution.
 +## 3. All advertising materials mentioning features or use of this software
 +##    must display the following acknowledgement:​
 +##        This product includes software developed by Terrapin Communications,​
 +##        Inc. and its contributors for RANCID.
 +## 4. Neither the name of Terrapin Communications,​ Inc. nor the names of its
 +##    contributors may be used to endorse or promote products derived from
 +##    this software without specific prior written permission.
 +## 5. It is requested that non-binding fixes and modifications be contributed
 +##    back to Terrapin Communications,​ Inc.
 +##
 +## THIS SOFTWARE IS PROVIDED BY Terrapin Communications,​ INC. AND CONTRIBUTORS
 +## ``AS IS''​ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 +## TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 +## PURPOSE ARE DISCLAIMED. ​ IN NO EVENT SHALL THE COMPANY OR CONTRIBUTORS
 +## BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 +## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 +## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 +## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 +## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 +## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 +## POSSIBILITY OF SUCH DAMAGE.
 +#
 +# Amazingly hacked version of Hank's rancid - this one tries to
 +# deal with foundrys and foundrys OEM'd by HP as Procurves.
 +#
 +#  RANCID - Really Awesome New Cisco confIg Differ
 +#
 +# usage: rancid [-dV] [-l] [-f filename | hostname]
 +#
 +use Getopt::​Std;​
 +getopts('​dflV'​);​
 +if ($opt_V) {
 +    print "​rancid 2.3.8\n";​
 +    exit(0);
 +}
 +$log = $opt_l;
 +$debug = $opt_d;
 +$file = $opt_f;
 +$host = $ARGV[0];
 +$clean_run = 0;
 +$found_end = 0;
 +$timeo = 90;                            # flogin timeout in seconds
 +
 +my(@commandtable,​ %commands, @commands);#​ command lists
 +my($aclsort) = ("​ipsort"​); ​             # ACL sorting mode
 +my($filter_commstr); ​                   # SNMP community string filtering
 +my($filter_pwds); ​                      # password filtering mode
 +
 +# This routine is used to print out the router configuration
 +sub ProcessHistory {
 +    my($new_hist_tag,​$new_command,​$command_string,​@string) = (@_);
 +    if ((($new_hist_tag ne $hist_tag) || ($new_command ne $command))
 +        && scalar(%history)) {
 +        print eval "​$command \%history";​
 +        undef %history;
 +    }
 +    if (($new_hist_tag) && ($new_command) && ($command_string)) {
 +        if ($history{$command_string}) {
 +            $history{$command_string} = "​$history{$command_string}@string";​
 +        } else {
 +            $history{$command_string} = "​@string";​
 +        }
 +    } elsif (($new_hist_tag) && ($new_command)) {
 +        $history{++$#​history} = "​@string";​
 +    } else {
 +        print "​@string";​
 +    }
 +    $hist_tag = $new_hist_tag;​
 +    $command = $new_command;​
 +    1;
 +}
 +
 +sub numerically { $a <=> $b; }
 +
 +# This is a sort routine that will sort numerically on the
 +# keys of a hash as if it were a normal array.
 +sub keynsort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $key (sort numerically keys(%lines)) {
 +        $sorted_lines[$i] = $lines{$key};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a sort routine that will sort on the
 +# keys of a hash as if it were a normal array.
 +sub keysort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $key (sort keys(%lines)) {
 +        $sorted_lines[$i] = $lines{$key};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a sort routine that will sort on the
 +# values of a hash as if it were a normal array.
 +sub valsort{
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $key (sort values %lines) {
 +        $sorted_lines[$i] = $key;
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a numerical sort routine (ascending).
 +sub numsort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $num (sort {$a <=> $b} keys %lines) {
 +        $sorted_lines[$i] = $lines{$num};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a sort routine that will sort on the
 +# ip address when the ip address is anywhere in
 +# the strings.
 +sub ipsort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $addr (sort sortbyipaddr keys %lines) {
 +        $sorted_lines[$i] = $lines{$addr};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# These two routines will sort based upon IP addresses
 +sub ipaddrval {
 +    my(@a) = ($_[0] =~ m#​^(\d+)\.(\d+)\.(\d+)\.(\d+)$#​);​
 +    $a[3] + 256 * ($a[2] + 256 * ($a[1] +256 * $a[0]));
 +}
 +sub sortbyipaddr {
 +    &​ipaddrval($a) <=> &​ipaddrval($b);​
 +}
 +
 +# This routine parses "show version"​
 +sub ShowVersion {
 +    my($slot);
 +
 +    print STDERR " ​   In ShowVersion:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        next if /^\s*$/;
 +        last if (/​^$prompt/​);​
 +
 +        next if (/^(The system |Crash time)/);
 +        next if (/​^(System|(Active|Standby) Management|LP Slot \d+) uptime is/);
 +        # remove uptime on newer switches
 +        s/(STACKID \d+)\s+system uptime is.*$/$1/;
 +
 +        s/​^\s*(HW|SW)/​$1/;​
 +        s/​^\s*(Compiled on)/SW: $1/;
 +        s/​^\s*(\(\d+ bytes\) from )/SW: $1/;
 +
 +        #​s/​^(HW.*)/​$1\n/;​
 +        if (/^SL (\d+)/) {
 +            $slot = "Slot $1";
 +            s/^SL \d+/$slot/;
 +        }
 +        if (/MHz .* processor/) {
 +            $slot = "​MGMT";​
 +        }
 +        s/^(\s*\d+ )/​$slot:​$1/;​
 +        s/^===*//;
 +
 +        ProcessHistory("​VERSION","","","​!$_"​);​
 +    }
 +    ProcessHistory("​VERSION","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine parses "show chassis"​
 +sub ShowChassis {
 +    my($skip) = 0;
 +
 +    print STDERR " ​   In ShowChassis:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/ from /);
 +        next if (/current temperature/​i);​
 +        return(1) if (/​^\s+\^$/​); ​              # edgeiron invalid command
 +
 +        if (/^---/ || /^$/) { # next section reached
 +            $skip = 0;
 +        }
 +        if (/​(POWERS|TEMPERATURE READINGS)/) {
 +            $skip = 1;
 +        }
 +        if (/fan controlled temperature:/​i ||
 +            /fan speed switching temperature thresholds/​i) {
 +            $skip = 1;
 +        }
 +        if (/THERMAL PLANE/) {
 +            $skip = 1;
 +        }
 +        if (/​temperature:/​i) {
 +            $skip = 1;
 +        }
 +        s/(Fan \d+ \S+), speed .*/$1/;
 +        if (/speed/i) {
 +            $skip = 1;
 +        }
 +        next if $skip;
 +
 +        ProcessHistory("​CHASSIS","","","​! $_");
 +    }
 +    ProcessHistory("​CHASSIS","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine parses "show flash"
 +sub ShowFlash {
 +    print STDERR " ​   In ShowFlash: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/^\s*$/);
 +        return(1) if (/​^\s+\^$/​); ​              # edgeiron invalid command
 +
 +        ProcessHistory("​FLASH","","","​!Flash:​ $_");
 +    }
 +    ProcessHistory("","","","​!\n"​);​
 +    return;
 +}
 +
 +# This routine parses "show module"​
 +sub ShowModule {
 +    print STDERR " ​   In ShowModule: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        return(1) if (/Invalid input (->​|detected)/​);​
 +        return(1) if (/​^\s+\^$/​); ​              # edgeiron invalid command
 +        next if (/^\s*$/);
 +        next if (/:\s*$/);
 +
 +        ProcessHistory("​MODULE","","","​!Module:​ $_");
 +    }
 +    ProcessHistory("","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine processes a "write term"
 +sub WriteTerm {
 +    print STDERR " ​   In WriteTerm: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        return(1) if (/Invalid input (->​|detected)/​);​
 +        return(1) if (/​^\s+\^$/​); ​              # edgeiron invalid command
 +        return(0) if ($found_end); ​             # Only do this routine once
 +        last if (/​^$prompt/​);​
 +
 +        /current configuration\s*:/​i && next;
 +        /building configuration\.+\s*/​i && next;
 +        /building running-config,​ please wait/i && next;        # edgeiron
 +        /^ver \d+\.\d+/ && next;
 +        /^module \d+ / && next;
 +
 +        /^ntp clock-period /    && next; # kill ntp clock-period
 +        /^ length /             &&​ next; # kill length on serial lines
 +        /^ width /              && next; # kill width on serial lines
 +        # filter out any RCS/CVS tags to avoid confusing local CVS storage
 +        s/​\$(Revision|Id):/​ $1:/;
 +        # sort secure-mac-addresses. ​ Note: There is no way to determine which
 +        # have been added dynamically vs statically. ​ Thus, sort them?
 +        /​secure-mac-address (\S+)/ &&
 +            ProcessHistory("​SECMAC","​keysort","​$1","​$_"​) && next;
 +        # OR filter them? XXX
 +        #next if (/​secure-mac-address/​);​
 +
 +        # order access-lists
 +        /​^access-list\s+(\d+)\s+(perm|deny)\s+(\d\S+)(\/​\d+)\s*$/​ &&
 +            ProcessHistory("​PACL $1 $2","​$aclsort","​$3","​$_"​)
 +            && next;
 +        /​^access-list\s+(\d\d?​)\s+(\S+)\s+(\S+)/​ &&
 +            ProcessHistory("​ACL $1 $2","​$aclsort","​$3","​$_"​) && next;
 +        # order extended access-lists
 +        /​^access-list\s+(\d\d\d)\s+(\S+)\s+ip\s+host\s+(\S+)/​ &&
 +            ProcessHistory("​EACL $1 $2","​$aclsort","​$3","​$_"​) && next;
 +        /​^access-list\s+(\d\d\d)\s+(\S+)\s+ip\s+(\d\S+)/​ &&
 +            ProcessHistory("​EACL $1 $2","​$aclsort","​$3","​$_"​) && next;
 +        /​^access-list\s+(\d\d\d)\s+(\S+)\s+ip\s+any/​ &&
 +            ProcessHistory("​EACL $1 $2","​$aclsort","​0.0.0.0","​$_"​) && next;
 +        # order arp lists
 +        /​^arp\s+(\d+\.\d+\.\d+\.\d+)\s+/​ &&
 +            ProcessHistory("​ARP","​$aclsort","​$1","​$_"​) && next;
 +        # order logging statements
 +        /^logging (\d+\.\d+\.\d+\.\d+)/​ &&
 +            ProcessHistory("​LOGGING","​ipsort","​$1","​$_"​) && next;
 +        # order/prune snmp-server host/​community statements
 +        if (/​^(snmp-server host )(\d+\.\d+\.\d+\.\d+)/​) {
 +            if ($filter_commstr) {
 +                ProcessHistory("​SNMPSERVERHOST","​ipsort","​$2","​!$1 $2 <​removed>​\n"​) && next;
 +            } else {
 +                ProcessHistory("​SNMPSERVERHOST","​ipsort","​$2","​$_"​) && next;
 +            }
 +        }
 +        if (/​^(snmp-server community )(\S+)/) {
 +            if ($filter_commstr) {
 +                ProcessHistory("​SNMPSERVERCOMM","​keysort","​$_","​!$1<​removed>​$'"​) && next;
 +            } else {
 +                ProcessHistory("​SNMPSERVERCOMM","​keysort","​$_","​$_"​) && next;
 +            }
 +        }
 +        # order tacacs server statements
 +        if (/​^(tacacs-server key )/ && $filter_pwds >= 1) {
 +            ProcessHistory("","","","​! $1<​removed>​\n"​);​
 +            next;
 +        }
 +        # delete ntp auth password
 +        if (/^(ntp authentication-key \d+ md5) / && $filter_pwds >= 2) {
 +            ProcessHistory("","","","​!$1 <​removed>​\n"​);​
 +            next;
 +        }
 +        # order ntp peers/​servers
 +        if (/^ntp (server|peer) (\d+)\.(\d+)\.(\d+)\.(\d+)/​) {
 +            $sortkey = sprintf("​$1 %03d%03d%03d%03d",​$2,​$3,​$4,​$5);​
 +            ProcessHistory("​NTP","​keysort",​$sortkey,"​$_"​);​
 +            next;
 +        }
 +        # order ip host line statements
 +        /^ip host line(\d+)/ &&
 +            ProcessHistory("​IPHOST","​numsort","​$1","​$_"​) && next;
 +        # order ip nat source static statements
 +        /^ip nat (\S+) source static (\S+)/ &&
 +            ProcessHistory("​IP NAT $1","​ipsort","​$2","​$_"​) && next;
 +
 +        # filter ssh public key
 +        if (/^(crypto key generate (rsa|dsa) public_key)/​ &&
 +                $filter_pwds >= 2) {
 +            ProcessHistory("","","","​!$1 <​removed>​\n"​);​
 +            next;
 +        }
 +        # filter ssh private key
 +        if (/^(crypto key generate (rsa|dsa) private_key)/​ &&
 +                $filter_pwds >= 1) {
 +            ProcessHistory("","","","​!$1 <​removed>​\n"​);​
 +            next;
 +        }
 +        # filter ssl secret
 +        if (/​^(crypto-ssl certificate generate secret_data)/​ &&
 +            $filter_pwds >= 1) {
 +            ProcessHistory("","","","​!$1 <​removed>​\n"​);​
 +            next;
 +        }
 +
 +        # reorder listing of ports in a vlan
 +        if (/^ (?:​un)?​tagged ethe/) {
 +            chomp;
 +            s/^\s+//;
 +            s/\s+$//;
 +
 +            my @list = split /​\s+ethe\s+/,​ $_;
 +            my $tagtype = shift @list;
 +
 +            while (@list) {
 +                ProcessHistory("","","",​
 +                                " $tagtype ethe " . (shift @list) . "​\n"​);​
 +            }
 +            next;
 +        }
 +
 +
 +        ProcessHistory("","","","​$_"​);​
 +        # end of config
 +        if (/^end$/) {
 +            $found_end = 1;
 +            return(1);
 +        }
 +    }
 +    return(0);
 +}
 +
 +# dummy function
 +sub DoNothing {print STDOUT;}
 +
 +# Main
 +@commandtable = (
 +        {'show version' ​        => '​ShowVersion'​},​
 +        {'show chassis' ​        => '​ShowChassis'​},​
 +        {'show module' ​         => '​ShowModule'​},​
 +        {'show flash' ​          => '​ShowFlash'​},​
 +        {'​write term' ​          => '​WriteTerm'​},​
 +        {'show running-config' ​ => '​WriteTerm'​},​
 +);
 +# Use an array to preserve the order of the commands and a hash for mapping
 +# commands to the subroutine and track commands that have been completed.
 +@commands = map(keys(%$_),​ @commandtable);​
 +%commands = map(%$_, @commandtable);​
 +
 +$cisco_cmds=join(";",​@commands);​
 +$cmds_regexp = join("​|",​ map quotemeta($_),​ @commands);
 +
 +if (length($host) == 0) {
 +    if ($file) {
 +        print(STDERR "Too few arguments: file name required\n"​);​
 +        exit(1);
 +    } else {
 +        print(STDERR "Too few arguments: host name required\n"​);​
 +        exit(1);
 +    }
 +}
 +open(OUTPUT,">​$host.new"​) || die "​Can'​t open $host.new for writing: $!\n";
 +select(OUTPUT);​
 +# make OUTPUT unbuffered if debugging
 +if ($debug) { $| = 1; }
 +
 +if ($file) {
 +    print STDERR "​opening file $host\n"​ if ($debug);
 +    print STDOUT "​opening file $host\n"​ if ($log);
 +    open(INPUT,"<​$host"​) || die "open failed for $host: $!\n";
 +} else {
 +    print STDERR "​executing flogin -t $timeo -c\"​$cisco_cmds\"​ $host\n"​ if ($debug);
 +    print STDOUT "​executing flogin -t $timeo -c\"​$cisco_cmds\"​ $host\n"​ if ($log);
 +    if (defined($ENV{NOPIPE}) && $ENV{NOPIPE} =~ /^YES/i) {
 +        system "​flogin -t $timeo -c \"​$cisco_cmds\"​ $host </​dev/​null > $host.raw 2>&​1"​ || die "​flogin failed for $host: $!\n";
 +        open(INPUT, "< $host.raw"​) || die "​flogin failed for $host: $!\n";
 +    } else {
 +        open(INPUT,"​flogin -t $timeo -c \"​$cisco_cmds\"​ $host </​dev/​null |") || die "​flogin failed for $host: $!\n";
 +    }
 +}
 +
 +# determine ACL sorting mode
 +if ($ENV{"​ACLSORT"​} =~ /no/i) {
 +    $aclsort = "";​
 +}
 +# determine community string filtering mode
 +if (defined($ENV{"​NOCOMMSTR"​}) &&
 +    ($ENV{"​NOCOMMSTR"​} =~ /yes/i || $ENV{"​NOCOMMSTR"​} =~ /^$/)) {
 +    $filter_commstr = 1;
 +} else {
 +    $filter_commstr = 0;
 +}
 +# determine password filtering mode
 +if ($ENV{"​FILTER_PWDS"​} =~ /no/i) {
 +    $filter_pwds = 0;
 +} elsif ($ENV{"​FILTER_PWDS"​} =~ /all/i) {
 +    $filter_pwds = 2;
 +} else {
 +    $filter_pwds = 1;
 +}
 +
 +ProcessHistory("","","","​!RANCID-CONTENT-TYPE:​ foundry\n!\n"​);​
 +TOP: while(<​INPUT>​) {
 +    tr/\015//d;
 +    if (/\#exit$/) {
 +        $clean_run=1;​
 +        last;
 +    }
 +    if (/^Error:/) {
 +        print STDOUT ("​$host flogin error: $_");
 +        print STDERR ("​$host flogin error: $_") if ($debug);
 +        $clean_run=0;​
 +        last;
 +    }
 +    while (/#​\s*($cmds_regexp)\s*$/​) {
 +        $cmd = $1;
 +        if (!defined($prompt)) {
 +            $prompt = ($_ =~ /​^([^#​]+#​)/​)[0];​
 +            $prompt =~ s/​([][}{)(\\])/​\\$1/​g;​
 +            print STDERR ("​PROMPT MATCH: $prompt\n"​) if ($debug);
 +        }
 +        print STDERR ("HIT COMMAND:​$_"​) if ($debug);
 +        if (! defined($commands{$cmd})) {
 +            print STDERR "​$host:​ found unexpected command - \"​$cmd\"​\n";​
 +            $clean_run = 0;
 +            last TOP;
 +        }
 +        $rval = &​{$commands{$cmd}};​
 +        delete($commands{$cmd});​
 +        if ($rval == -1) {
 +            $clean_run = 0;
 +            last TOP;
 +        }
 +    }
 +}
 +print STDOUT "Done $logincmd: $_\n" if ($log);
 +# Flush History
 +ProcessHistory("","","",""​);​
 +# Cleanup
 +close(INPUT);​
 +close(OUTPUT);​
 +
 +if (defined($ENV{NOPIPE}) && $ENV{NOPIPE} =~ /^YES/i) {
 +    unlink("​$host.raw"​) if (! $debug);
 +}
 +
 +# check for completeness
 +if (scalar(%commands) || !$clean_run || !$found_end) {
 +    if (scalar(%commands)) {
 +        printf(STDOUT "​$host:​ missed cmd(s): %s\n", join(',',​ keys(%commands)));​
 +        printf(STDERR "​$host:​ missed cmd(s): %s\n", join(',',​ keys(%commands))) if ($debug);
 +    }
 +    if (!$clean_run || !$found_end) {
 +print STDERR "​$host:​ End of run not found $clean_run || $found_end\n";​
 +        print STDOUT "​$host:​ End of run not found\n";​
 +        print STDERR "​$host:​ End of run not found\n"​ if ($debug);
 +        system("/​usr/​bin/​tail -1 $host.new"​);​
 +    }
 +    unlink "​$host.new"​ if (! $debug);
 +}
 +
 +(carmom@doon)-(0)-(11:​47 AM Mon May 21)->
 +--------------------------------------------------------------------------------
 +-bash: --------------------------------------------------------------------------------------------------------------------------------------------------------:​ command not found
 +
 +(carmom@doon)-(0)-(11:​48 AM Mon May 21)->
 +(/​usr/​local/​bin)-(61 files, 1.5Mb)-->​ cat rancid
 +#! /​usr/​bin/​perl
 +##
 +## $Id: rancid.in 2377 2012-01-31 22:55:13Z heas $
 +##
 +## rancid 2.3.8
 +## Copyright (c) 1997-2009 by Terrapin Communications,​ Inc.
 +## All rights reserved.
 +##
 +## This code is derived from software contributed to and maintained by
 +## Terrapin Communications,​ Inc. by Henry Kilmer, John Heasley, Andrew Partan,
 +## Pete Whiting, Austin Schutz, and Andrew Fort.
 +##
 +## Redistribution and use in source and binary forms, with or without
 +## modification,​ are permitted provided that the following conditions
 +## are met:
 +## 1. Redistributions of source code must retain the above copyright
 +##    notice, this list of conditions and the following disclaimer.
 +## 2. Redistributions in binary form must reproduce the above copyright
 +##    notice, this list of conditions and the following disclaimer in the
 +##    documentation and/or other materials provided with the distribution.
 +## 3. All advertising materials mentioning features or use of this software
 +##    must display the following acknowledgement:​
 +##        This product includes software developed by Terrapin Communications,​
 +##        Inc. and its contributors for RANCID.
 +## 4. Neither the name of Terrapin Communications,​ Inc. nor the names of its
 +##    contributors may be used to endorse or promote products derived from
 +##    this software without specific prior written permission.
 +## 5. It is requested that non-binding fixes and modifications be contributed
 +##    back to Terrapin Communications,​ Inc.
 +##
 +## THIS SOFTWARE IS PROVIDED BY Terrapin Communications,​ INC. AND CONTRIBUTORS
 +## ``AS IS''​ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 +## TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 +## PURPOSE ARE DISCLAIMED. ​ IN NO EVENT SHALL THE COMPANY OR CONTRIBUTORS
 +## BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 +## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 +## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 +## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 +## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 +## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 +## POSSIBILITY OF SUCH DAMAGE.
 +#
 +#  RANCID - Really Awesome New Cisco confIg Differ
 +#
 +# usage: rancid [-dV] [-l] [-f filename | hostname]
 +#
 +use Getopt::​Std;​
 +getopts('​dflV'​);​
 +if ($opt_V) {
 +    print "​rancid 2.3.8\n";​
 +    exit(0);
 +}
 +$log = $opt_l;
 +$debug = $opt_d;
 +$file = $opt_f;
 +$host = $ARGV[0];
 +$proc = "";​
 +$ios = "​IOS";​
 +$clean_run = 0;
 +$found_end = 0;
 +$found_version = 0;
 +$found_env = 0;
 +$found_diag = 0;
 +$timeo = 90;                            # clogin timeout in seconds
 +
 +my(@commandtable,​ %commands, @commands);#​ command lists
 +my($aclsort) = ("​ipsort"​); ​             # ACL sorting mode
 +my($config_register); ​                  # configuration register value
 +my($filter_commstr); ​                   # SNMP community string filtering
 +my($filter_pwds); ​                      # password filtering mode
 +my($supbootdisk) = 0;                   # skip sup-bootflash if sup-bootdisk
 +                                        # worked
 +
 +# This routine is used to print out the router configuration
 +sub ProcessHistory {
 +    my($new_hist_tag,​$new_command,​$command_string,​@string) = (@_);
 +    if ((($new_hist_tag ne $hist_tag) || ($new_command ne $command))
 +        && scalar(%history)) {
 +        print eval "​$command \%history";​
 +        undef %history;
 +    }
 +    if (($new_hist_tag) && ($new_command) && ($command_string)) {
 +        if ($history{$command_string}) {
 +            $history{$command_string} = "​$history{$command_string}@string";​
 +        } else {
 +            $history{$command_string} = "​@string";​
 +        }
 +    } elsif (($new_hist_tag) && ($new_command)) {
 +        $history{++$#​history} = "​@string";​
 +    } else {
 +        print "​@string";​
 +    }
 +    $hist_tag = $new_hist_tag;​
 +    $command = $new_command;​
 +    1;
 +}
 +
 +sub numerically { $a <=> $b; }
 +
 +# This is a sort routine that will sort numerically on the
 +# keys of a hash as if it were a normal array.
 +sub keynsort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $key (sort numerically keys(%lines)) {
 +        $sorted_lines[$i] = $lines{$key};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a sort routine that will sort on the
 +# keys of a hash as if it were a normal array.
 +sub keysort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $key (sort keys(%lines)) {
 +        $sorted_lines[$i] = $lines{$key};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a sort routine that will sort on the
 +# values of a hash as if it were a normal array.
 +sub valsort{
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $key (sort values %lines) {
 +        $sorted_lines[$i] = $key;
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a numerical sort routine (ascending).
 +sub numsort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $num (sort {$a <=> $b} keys %lines) {
 +        $sorted_lines[$i] = $lines{$num};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# This is a sort routine that will sort on the
 +# ip address when the ip address is anywhere in
 +# the strings.
 +sub ipsort {
 +    local(%lines) = @_;
 +    local($i) = 0;
 +    local(@sorted_lines);​
 +    foreach $addr (sort sortbyipaddr keys %lines) {
 +        $sorted_lines[$i] = $lines{$addr};​
 +        $i++;
 +    }
 +    @sorted_lines;​
 +}
 +
 +# These two routines will sort based upon IP addresses
 +sub ipaddrval {
 +    my(@a) = ($_[0] =~ m#​^(\d+)\.(\d+)\.(\d+)\.(\d+)$#​);​
 +    $a[3] + 256 * ($a[2] + 256 * ($a[1] +256 * $a[0]));
 +}
 +sub sortbyipaddr {
 +    &​ipaddrval($a) <=> &​ipaddrval($b);​
 +}
 +
 +# This routine parses "show version"​
 +sub ShowVersion {
 +    print STDERR " ​   In ShowVersion:​ $_" if ($debug);
 +    my($slaveslot);​
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        if (/​^$prompt/​) { $found_version = 1; last};
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(0) if ($found_version); ​         # Only do this routine once
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        if (/^Slave in slot (\d+) is running/) {
 +            $slave = " Slave:";​
 +            $slaveslot = ", slot $1";
 +            next;
 +        }
 +        if (/cisco ios .* IOS-XE/i) { $ios = "​XE";​ }
 +        if (/​^Application and Content Networking .*Software/​) { $type = "​CE";​ }
 +        # treat the ACE like the Content Engines for matching endofconfig
 +        if (/^Cisco Application Control Software/) { $type = "​CE";​ }
 +        if (/^Cisco Storage Area Networking Operating System/) { $type = "​SAN";​}
 +        if (/^Cisco Nexus Operating System/) { $type = "​NXOS";​}
 +        /​^Application and Content Networking Software Release /i &&
 +            ProcessHistory("​COMMENTS","​keysort","​F1",​ "​!Image:​ $_") && next;
 +        /^Cisco Secure PIX /i &&
 +            ProcessHistory("​COMMENTS","​keysort","​F1",​ "​!Image:​ $_") && next;
 +        # ASA "​time-based licenses"​ - eg: bot-net
 +        /^This (PIX|platform) has a time-based license that will expire in\s+(\d{2,​})\s+day.*$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D1",​
 +                           "​!This $1 has a time-based license\n"​) && next;
 +        # PIX 6 fail-over license, as in "This PIX has an Unrestricted (UR)
 +        # license." ​ PIX 7 as "his platform has ..."
 +        /^This (PIX|platform) has an?​\s+(.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D1",​ "​!$_"​) && next;
 +        /^(Cisco )?IOS .* Software,? \(([A-Za-z0-9_-]*)\),​ .*Version\s+(.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​F1",​
 +                "​!Image:​$slave Software: $2, $3\n") && next;
 +        /​^([A-Za-z-0-9_]*) Synced to mainline version: (.*)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​F2",​
 +                "​!Image:​$slave $1 Synced to mainline version: $2\n") && next;
 +        /^Compiled (.*)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​F3",​
 +                "​!Image:​$slave Compiled: $1\n") && next;
 +        /^ROM: (IOS \S+ )?(System )?​Bootstrap.*(Version.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​G1",​
 +                "!ROM Bootstrap: $3\n") && next;
 +        if (/​^Hardware:​\s+(.*),​ (.* RAM), CPU (.*)$/) {
 +            ProcessHistory("​COMMENTS","​keysort","​A1",​
 +                "​!Chassis type: $1 - a PIX\n"​);​
 +            ProcessHistory("​COMMENTS","​keysort","​A2",​
 +                "!CPU: $3\n"​);​
 +            ProcessHistory("​COMMENTS","​keysort","​B1",​ "​!Memory:​ $2\n"​);​
 +        }
 +        /^serial number:​\s+(.*)$/​i &&
 +            ProcessHistory("​COMMENTS","​keysort","​C1",​ "​!Serial Number: $1\n") &&
 +            next;
 +        # More PIX stuff
 +        /​^Encryption hardware device\s+:​\s+(.*)/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​A3",​ "​!Encryption:​ $1\n") &&
 +            next;
 +        /^running activation key\s*:​\s+(.*)/​i &&
 +            ProcessHistory("​COMMENTS","​keysort","​D2",​ "!Key: $1\n") &&
 +            next;
 +        # Flash on the PIX or FWSM (FireWall Switch Module)
 +        /​^Flash(\s+\S+)+ \@ 0x\S+,​\s+(\S+)/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​B2",​ "​!Memory:​ Flash $2\n") &&
 +            next;
 +        # CatOS 3500xl stuff
 +        /^system serial number\s*:​\s+(.*)$/​i &&
 +            ProcessHistory("​COMMENTS","​keysort","​C1",​ "​!Serial Number: $1\n") &&
 +            next;
 +        /^Model / &&
 +            ProcessHistory("​COMMENTS","​keysort","​C2",​ "​!$_"​) && next;
 +        /​^Motherboard / &&
 +            ProcessHistory("​COMMENTS","​keysort","​C3",​ "​!$_"​) && next;
 +        /^Power supply / &&
 +            ProcessHistory("​COMMENTS","​keysort","​C4",​ "​!$_"​) && next;
 +
 +        /​^Activation Key:​\s+(.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​C2",​ "​!$_"​) && next;
 +        /^ROM: \d+ Bootstrap .*(Version.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​G2",​
 +                "!ROM Image: Bootstrap $1\n!\n"​) && next;
 +        /^ROM: .*(Version.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​G3","​!ROM Image: $1\n") && next;
 +        /​^BOOTFLASH:​ .*(Version.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​G4","​!BOOTFLASH:​ $1\n") && next;
 +        /^BOOTLDR: .*(Version.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​G4","​!BOOTLDR:​ $1\n") && next;
 +        /^System image file is "​([^\"​]*)",​ booted via (\S*)/ &&
 +# removed the booted source due to
 +# CSCdk28131: cycling info in 'sh ver'
 +#       ​ProcessHistory("​COMMENTS","​keysort","​F4","​!Image:​ booted via $2, $1\n") &&
 +            ProcessHistory("​COMMENTS","​keysort","​F4","​!Image:​ booted $1\n") &&
 +            next;
 +        /^System image file is "​([^\"​]*)"​$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​F5","​!Image:​ $1\n") && next;
 +        if (/​(\S+(?:​\sseries)?​)\s+(?:​\((\S+)\)\s+processor|\(revision[^)]+\)).*\s+with (\S+k) bytes/i) {
 +            $proc = $1;
 +            my($cpu) = $2;
 +            my($mem) = $3;
 +            my($device) = "​router";​
 +
 +            # the next line ought to be the more specific cpu info, grab it.
 +            # yet, some boards/IOS vers have a processor ID line between these
 +            # two.  grrr.  make sure we dont grab the "​software"​ junk that
 +            # follows these lines by looking for "CPU at " or the 2600s
 +            # "​processor:​ " unique string. ​ there are undoubtedly many other
 +            # incantations. ​ for a slave, we dont get this info, its just a
 +            # blank line.
 +            $_ = <​INPUT>;​
 +            if (/processor board id/i) {
 +                my($sn);
 +
 +                if (/processor board id (\S+)/i) {
 +                    $sn = $1;
 +                    $sn =~ s/,$//;
 +                    ProcessHistory("​COMMENTS","​keysort","​D9",​
 +                                   "​!Processor ID: $sn\n"​);​
 +                }
 +                $_ = <​INPUT>;​
 +            }
 +            $_ = ""​ if (! /(cpu at |processor: |$cpu processor,​)/​i);​
 +            tr/\015//d;
 +            s/​implementation/​impl/​i;​
 +            if ($_ !~ /^\s*$/) {
 +                chomp;
 +                s/^/, /;
 +            }
 +
 +            if ($proc eq "​CSC"​) {
 +                $type = "​AGS";​
 +            } elsif ($proc eq "​CSC4"​) {
 +                $type = "​AGS+";​
 +            } elsif ($proc =~ /1900/) {
 +                $type = "​1900";​
 +                $device = "​switch";​
 +            } elsif ($proc =~ /​^(AS)?​25[12][12]/​) {
 +                $type = "​2500";​
 +            } elsif ($proc =~ /261[01]/ || $proc =~ /262[01]/ ) {
 +                $type = "​2600";​
 +            } elsif ($proc =~ /WS-C29/) {
 +                $type = "​2900XL";​
 +                $device = "​switch";​
 +            } elsif ($proc =~ /WS-C355/) {
 +                $type = "​3550";​
 +                $device = "​switch";​
 +            } elsif ($proc =~ /WS-C35/) {
 +                $type = "​3500XL";​
 +                $device = "​switch";​
 +            } elsif ($proc =~ /​^36[0246][0-9]/​) {
 +                $type = "​3600";​
 +            } elsif ($proc =~ /^37/) {
 +                $type = "​3700";​
 +            } elsif ($proc =~ /^38/) {
 +                $type = "​3800";​
 +            } elsif ($proc =~ /WS-C45/) {
 +                $type = "​4500";​
 +                $device = "​switch";​
 +            } elsif ( $proc =~ /^AS5300/) {
 +                $type = "​AS5300";​
 +            } elsif ( $proc =~ /^AS5350/) {
 +                $type = "​AS5350";​
 +            } elsif ( $proc =~ /^AS5400/) {
 +                $type = "​AS5400";​
 +            } elsif ($proc =~ /6000/) {
 +                $type = "​6000";​
 +                $device = "​switch";​
 +            } elsif ($proc eq "​WK-C65"​) {
 +                $type = "​6500";​
 +            } elsif ($proc eq "​RP"​) {
 +                $type = "​7000";​
 +            } elsif ($proc eq "​RP1"​) {
 +                $type = "​7000";​
 +            } elsif ($proc =~ /720[246]/) {
 +                $type = "​7200";​
 +            } elsif ( $proc =~ /^73/) {
 +                $type = "​7300";​
 +            } elsif ($proc eq "​RSP7000"​) {
 +                $type = "​7500";​
 +            } elsif ($proc =~ /RSP\d/) {
 +                $type = "​7500";​
 +            } elsif ($proc =~ /OSR-76/) {
 +                $type = "​7600";​
 +            } elsif ($proc =~ /CISCO76/) {
 +                $type = "​7600";​
 +            } elsif ($proc =~ /​1200[48]\/​(GRP|PRP)/​ || $proc =~ /​1201[26]\/​(GRP|PRP)/​) {
 +                $type = "​12000";​
 +            } elsif ($proc =~ /​1201[26]-8R\/​(GRP|PRP)/​) {
 +                $type = "​12000";​
 +            } elsif ($proc =~ /​1240[48]\/​(GRP|PRP)/​ || $proc =~ /​1241[06]\/​(GRP|PRP)/​) {
 +                $type = "​12400";​
 +            } else {
 +                $type = $proc;
 +            }
 +
 +            print STDERR "TYPE = $type\n"​ if ($debug);
 +            ProcessHistory("​COMMENTS","​keysort","​A1",​
 +                "​!Chassis type:$slave $proc - a $type $device\n"​);​
 +            ProcessHistory("​COMMENTS","​keysort","​B1",​
 +                "​!Memory:​$slave main $mem\n"​);​
 +            if (defined($cpu)) {
 +                ProcessHistory("​COMMENTS","​keysort","​A3",​
 +                               "​!CPU:​$slave $cpu$_$slaveslot\n"​);​
 +            }
 +            next;
 +        }
 +        if (/(\S+) Silicon\s*Switch Processor/) {
 +            if (!defined($C0)) {
 +                $C0 = 1; ProcessHistory("​COMMENTS","​keysort","​C0","​!\n"​);​
 +            }
 +            ProcessHistory("​COMMENTS","​keysort","​C2","​!SSP:​ $1\n"​);​
 +            $ssp = 1;
 +            $sspmem = $1;
 +            next;
 +        }
 +        /^(\d+[kK]) bytes of multibus/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​B2",​
 +                "​!Memory:​ multibus $1\n") && next;
 +        /^(\d+[kK]) bytes of (non-volatile|NVRAM)/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​B3",​
 +                "​!Memory:​ nvram $1\n") && next;
 +        /^(\d+[kK]) bytes of (flash memory|processor board System flash|ATA Comp
 +actFlash)/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​B5","​!Memory:​ flash $1\n") &&
 +            next;
 +        /^(\d+[kK]) bytes of .*flash partition/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​B6",​
 +                "​!Memory:​ flash partition $1\n") && next;
 +        /^(\d+[kK]) bytes of Flash internal/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​B4",​
 +                "​!Memory:​ bootflash $1\n") && next;
 +        if (/​^(\d+[kK]) bytes of (Flash|ATA)?​.*PCMCIA .*(slot|disk) ?(\d)/i) {
 +            ProcessHistory("​COMMENTS","​keysort","​B7",​
 +                "​!Memory:​ pcmcia $2 $3$4 $1\n"​);​
 +            next;
 +        }
 +        if (/​^(\d+[kK]) bytes of (slot|disk)(\d)/​i) {
 +            ProcessHistory("​COMMENTS","​keysort","​B7",​
 +                "​!Memory:​ pcmcia $2$3 $1\n"​);​
 +            next;
 +        }
 +        if (/​^WARNING/​) {
 +            if (!defined($I0)) {
 +                $I0 = 1;
 +                ProcessHistory("​COMMENTS","​keysort","​I0","​!\n"​);​
 +            }
 +            ProcessHistory("​COMMENTS","​keysort","​I1","​! $_");
 +        }
 +        if (/​^Configuration register is (.*)$/) {
 +            $config_register = $1;
 +            next;
 +        }
 +        if (/​^Configuration register on node \S+ is (.*)$/) {
 +            $config_register = $1 if (length($config_register) < 1);
 +            next;
 +        }
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show redundancy"​
 +sub ShowRedundancy {
 +    print STDERR " ​   In ShowRedundancy:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        if (/^Version information for secondary in slot (\d+):/) {
 +            $slave = " Slave:";​
 +            $slaveslot = ", slot $1";
 +            next;
 +        }
 +
 +        /^IOS .* Software \(([A-Za-z0-9_-]*)\),​ .*Version\s+(.*)$/​ &&
 +            ProcessHistory("​COMMENTS","​keysort","​F1",​
 +                "​!Image:​$slave Software: $1, $2\n") && next;
 +        /^Compiled (.*)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​F3",​
 +                "​!Image:​$slave Compiled: $1\n") && next;
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show IDprom"​
 +sub ShowIDprom {
 +    my($tmp);
 +
 +    print STDERR " ​   In ShowIDprom: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        /FRU is .(.*)\'/​ && ($tmp = $1);
 +        /Product Number = .(.*)\'/​ &&
 +                ProcessHistory("​COMMENTS","​keysort","​D0",​
 +                                "​!Catalyst Chassis type: $1, $tmp\n"​);​
 +        /Serial Number = .([0-9A-Za-z]+)/​ &&
 +                ProcessHistory("​COMMENTS","​keysort","​D1",​
 +                                "​!Catalyst Chassis S/N: $1\n"​);​
 +        /​Manufacturing Assembly Number = .([-0-9]+)/ && ($tmp = $1);
 +        /​Manufacturing Assembly Revision = .(.*)\'/​ && ($tmp .= ", rev " . $1);
 +        /Hardware Revision = ([0-9.]+)/ &&
 +                ProcessHistory("​COMMENTS","​keysort","​D2",​
 +                                "​!Catalyst Chassis assembly: $tmp, ver $1\n"​);​
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show install active"​
 +sub ShowInstallActive {
 +    print STDERR " ​   In ShowInstallActive:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/​^\s*\^\s*$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        ProcessHistory("​COMMENTS","​keysort","​F5","​!Image:​ $_") && next;
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show env all"
 +sub ShowEnv {
 +    # Skip if this is not a 7500, 7200, or 7000.
 +    print STDERR " ​   In ShowEnv: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        if (/​^$prompt/​) { $found_env = 1; last};
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        #return(1) if ($type !~ /^7/);
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(0) if ($found_env); ​             # Only do this routine once
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        if (!defined($E0)) {
 +            $E0 = 1;
 +            ProcessHistory("​COMMENTS","​keysort","​E0","​!\n"​);​
 +        }
 +        if (/^Arbiter type (\d), backplane type (\S+)/) {
 +            if (!defined($C0)) {
 +                $C0 = 1; ProcessHistory("​COMMENTS","​keysort","​C0","​!\n"​);​
 +            }
 +            ProcessHistory("​COMMENTS","​keysort","​C1",​
 +                "​!Enviromental Arbiter Type: $1\n"​);​
 +            ProcessHistory("​COMMENTS","​keysort","​A2",​
 +                "​!Chassis type: $2 backplane\n"​);​
 +            next;
 +        }
 +        /^Power Supply Information$/​ && next;
 +        /^\s*Power Module\s+Voltage\s+Current$/​ && next;
 +        /^\s*(Power [^:\n]+)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​E1","​!Power:​ $1\n") && next;
 +        /^\s*(Lower Power .*)/i &&
 +            ProcessHistory("​COMMENTS","​keysort","​E2","​!Power:​ $1\n") && next;
 +        /​^\s*(redundant .*)/i &&
 +            ProcessHistory("​COMMENTS","​keysort","​E2","​!Power:​ $1\n") && next;
 +        /^\s*(RPS is .*)/i &&
 +            ProcessHistory("​COMMENTS","​keysort","​E2","​!Power:​ $1\n") && next;
 +    }
 +    ProcessHistory("​COMMENTS","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine parses "show rsp chassis-info"​ for the rsp
 +# This will create arrays for hw info.
 +sub ShowRSP {
 +    print STDERR " ​   In ShowRSP: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(-1) if (/command authorization failed/i);
 +        # return(1) if ($type !~ /^12[40]/);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +        /^$/ && next;
 +
 +        /​^\s+Chassis model: (\S+)/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D1",​
 +                                "!RSP Chassis model: $1\n") &&
 +            next;
 +        /​^\s+Chassis S\/N: (.*)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D2",​
 +                                "!RSP Chassis S/N: $1\n") &&
 +            next;
 +    }
 +
 +    return(0);
 +}
 +
 +# This routine parses "show gsr chassis-info"​ for the gsr
 +# This will create arrays for hw info.
 +sub ShowGSR {
 +    # Skip if this is not a 1200n.
 +    print STDERR " ​   In ShowGSR: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(-1) if (/command authorization failed/i);
 +        # return(1) if ($type !~ /^12[40]/);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +        /^$/ && next;
 +
 +        /​^\s+Chassis:​ type (\S+) Fab Ver: (\S+)/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D1",​
 +                                "!GSR Chassis type: $1 Fab Ver: $2\n") &&
 +            next;
 +        /​^\s+Chassis S\/N: (.*)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D2",​
 +                                "!GSR Chassis S/N: $1\n") &&
 +            next;
 +        /^\s+PCA: (\S+)\s*rev:​ (\S+)\s*dev:​ \S+\s*HW ver: (\S+)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D3",​
 +                                "!GSR Backplane PCA: $1, rev $2, ver $3\n") &&
 +            next;
 +        /​^\s+Backplane S\/N: (\S+)$/ &&
 +            ProcessHistory("​COMMENTS","​keysort","​D4",​
 +                                "!GSR Backplane S/N: $1\n") &&
 +            next;
 +    }
 +    ProcessHistory("​COMMENTS","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine parses "show boot"
 +sub ShowBoot {
 +    # Pick up boot variables if 7000/​7200/​7500/​12000/​2900/​3500;​
 +    # otherwise pick up bootflash.
 +    print STDERR " ​   In ShowBoot: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/​^\s*\^\s*$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(1) if (/Ambiguous command/i);
 +        return(1) if (/(Open device \S+ failed|Error opening \S+:)/);
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        next if /CONFGEN variable/;
 +        if (!defined($H0)) {
 +            $H0 = 1; ProcessHistory("​COMMENTS","​keysort","​H0","​!\n"​);​
 +        }
 +        if ($type !~ /​^(12[04]|7)/​) {
 +            if ($type !~ /​^(29|35)00/​) {
 +                ProcessHistory("​COMMENTS","​keysort","​H2","​!BootFlash:​ $_");
 +            } else {
 +                ProcessHistory("​COMMENTS","​keysort","​H1","​!Variable:​ $_");
 +            }
 +        } elsif (/​(variable|register)/​) {
 +            ProcessHistory("​COMMENTS","​keysort","​H1","​!Variable:​ $_");
 +        }
 +    }
 +    ProcessHistory("​COMMENTS","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine parses "show flash"
 +sub ShowFlash {
 +    # skip if this is 7000, 7200, 7500, or 12000; else we end up with
 +    # redundant data from dir /all slot0:
 +    print STDERR " ​   In ShowFlash: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if ($type =~ /​^(12[40]|7)/​);​
 +        return(1) if ($ios eq "​XE"​);​
 +        return(1) if (/​^\s*\^\s*$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        # Filter dhcp database
 +        next if (/dhcp_[^. ]*\.txt/);
 +
 +        /​\s+(multiple-fs|nv_hdr|vlan\.dat)$/​ && next;
 +        ProcessHistory("​FLASH","","","​!Flash:​ $_");
 +    }
 +    ProcessHistory("","","","​!\n"​);​
 +    return;
 +}
 +
 +# This routine parses "dir /all ((disk|slot)N|bootflash|nvram):"​
 +sub DirSlotN {
 +    print STDERR " ​   In DirSlotN: $_" if ($debug);
 +
 +    my($dev) = (/​\s([^\s]+):/​);​
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if /​^\s*\^\s*$/;​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(1) if (/(No such device|Error Sending Request)/​i);​
 +        return(1) if (/\%Error: No such file or directory/​);​
 +        return(1) if (/No space information available/​);​
 +        # Corrupt flash
 +        /\%Error calling getdents / &&
 +            ProcessHistory("​FLASH","","","​!Flash:​ $dev: $_") && next;
 +        return(-1) if (/\%Error calling/);
 +        return(-1) if (/(: device being squeezed|ATA_Status time out)/i); # busy
 +        return(-1) if (/\%Error opening \S+:\S+ \(Device or resource busy\)/i);
 +        return(-1) if (/command authorization failed/i);
 +        return(1) if (/(Open device \S+ failed|Error opening \S+:)/);
 +        # skip dir sup-bootflash if dir sup-bootdisk was successful, duplicates
 +        if ($cmd =~ / sup-bootdisk/​) {
 +            $supbootdisk++;​
 +        } elsif ($supbootdisk && $cmd =~ / sup-bootflash/​) {
 +            return(0);
 +        }
 +        # filter frequently changing files from IOX bootflash
 +        if ($dev =~ /​bootflash/​) {
 +            next if (/​temp_cont\s*$/​);​
 +            next if (/​uptime_cont\s*$/​);​
 +        }
 +        # Filter dhcp database
 +        next if (/dhcp_[^. ]*\.txt/);
 +
 +        if ($ios eq "​XE"​ && /.*\((\d+) bytes free\)/) {
 +            my($tmp) = $1;
 +            if ($tmp >= (1024 * 1024 * 1024)) {
 +                $tmp = int($tmp / (1024 * 1024 * 1024));
 +                s/$1 bytes free/$tmp GB free/;
 +            } else {
 +                $tmp = int($tmp / (1024 * 1024));
 +                s/$1 bytes free/$tmp MB free/;
 +            }
 +        }
 +        if ($ios eq "​XE"​ && /​^((\s+)?​\d+\s+\S+)\s+\d+.*(tracelogs$)/​) {
 +            $_ = "​$1"​ . sprintf("​%43s",​ ""​) . "​$3\n";​
 +        }
 +        if ($ios eq "​IOS"​ && /​^((\s+)?​\d+\s+\S+)\s+\d+.*(sflog$)/​) {
 +            $_ = "​$1"​ . sprintf("​%43s",​ ""​) . "​$3\n";​
 +        }
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        ProcessHistory("​FLASH","","","​!Flash:​ $dev: $_");
 +    }
 +    ProcessHistory("","","","​!\n"​);​
 +    return(0);
 +}
 +
 +# This routine parses "show controllers"​
 +sub ShowContAll {
 +    # Skip if this is a 70[01]0, 7500, or 12000.
 +    print STDERR " ​   In ShowContAll:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        # return(1) if ($type =~ /​^(12[40]|7[05])/​);​
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        if (/​^Interface ([^ \n(]*)/) { $INT = "$1, "; next; }
 +        /^(BRI unit \d)/ &&
 +            ProcessHistory("​INT","","","​!Interface:​ $1\n") && next;
 +        /^LANCE unit \d, NIM/ &&
 +            ProcessHistory("​INT","","","​!Interface:​ $_") && next;
 +        /^(LANCE unit \d)/ &&
 +            ProcessHistory("​INT","","","​!Interface:​ $1\n") && next;
 +        /(Media Type is \S+),/ &&
 +            ProcessHistory("​INT","","","​!\t$1\n"​);​
 +            if (/(M\dT[^ :]*:) show controller:​$/​) {
 +                my($ctlr) = $1;
 +                $_ = <​INPUT>;​ tr/\015//d; s/ subunit \d,//;
 +                ProcessHistory("​INT","","","​!Interface:​ $ctlr $_");
 +            }
 +        if (/^(\S+) : show controller:​$/​) {
 +            my($ctlr) = $1;
 +            $_ = <​INPUT>;​ tr/\015//d; s/ subunit \d,//;
 +            ProcessHistory("​INT","","","​!Interface:​ $ctlr: $_");
 +        }
 +        /^(HD unit \d), idb/ &&
 +            ProcessHistory("​INT","","","​!Interface:​ $1\n") && next;
 +        /^HD unit \d, NIM/ &&
 +            ProcessHistory("​INT","","","​!Interface:​ $_") && next;
 +        /^buffer size \d+  HD unit \d, (.*)/ &&
 +            ProcessHistory("​INT","","","​!\t$1\n"​) && next;
 +        /^AM79970 / && ProcessHistory("​INT","","","​!Interface:​ $_") && next;
 +        /^buffer size \d+  (Universal Serial: .*)/ &&
 +            ProcessHistory("​INT","","","​!\t$1\n"​) && next;
 +        /^Hardware is (.*)/ &&
 +            ProcessHistory("​INT","","","​!Interface:​ $INT$1\n"​) && next;
 +        /^(QUICC Serial unit \d),/ &&
 +            ProcessHistory("​INT","","","​!$1\n"​) && next;
 +        /^QUICC Ethernet .*/ &&
 +            ProcessHistory("​INT","","","​!$_"​) && next;
 +        /^DTE .*\.$/ &&
 +            ProcessHistory("​INT","","","​!\t$_"​) && next;
 +        /^(cable type :.*),/ &&
 +            ProcessHistory("​INT","","","​!\t$1\n"​) && next;
 +        /^(.* cable.*), received clockrate \d+$/ &&
 +            ProcessHistory("​INT","","","​!\t$1\n"​) && next;
 +        /^.* cable.*$/ &&
 +            ProcessHistory("​INT","","","​!\t$_"​) && next;
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show controllers cbus"
 +# Some of this is printed out in ShowDiagbus.
 +sub ShowContCbus {
 +    # Skip if this is not a 7000 or 7500.
 +    print STDERR " ​   In ShowContCbus:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        #return(1) if ($type !~ /^7[05]0/);
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        if (/​^\s*slot(\d+):​ ([^,]+), hw (\S+), sw (\S+), ccb/) {
 +            $slot = $1;
 +            $board{$slot} = $2;
 +            $hwver{$slot} = $3;
 +            $hwucode{$slot} = $4;
 +        } elsif (/^\s*(\S+) (\d+), hardware version (\S+), microcode version (\S+)/) {
 +            $slot = $2;
 +            $board{$slot} = $1;
 +            $hwver{$slot} = $3;
 +            $hwucode{$slot} = $4;
 +        } elsif (/​(Microcode .*)/) {
 +            $ucode{$slot} = $1;
 +        } elsif (/(software loaded .*)/) {
 +            $ucode{$slot} = $1;
 +        } elsif (/(\d+) Kbytes of main memory, (\d+) Kbytes cache memory/) {
 +            $hwmemd{$slot} = $1;
 +            $hwmemc{$slot} = $2;
 +        } elsif (/byte buffers/) {
 +            chop;
 +            s/^\s*//;
 +            $hwbuf{$slot} = $_;
 +        } elsif (/Interface (\d+) - (\S+ \S+),/) {
 +            $interface = $1;
 +            ProcessHistory("​HW","","",​
 +                "​!\n!Int $interface: in slot $slot, named $2\n"​);​ next;
 +        } elsif (/(\d+) buffer RX queue threshold, (\d+) buffer TX queue limit, buffer size (\d+)/) {
 +            ProcessHistory("​HW","","","​!Int $interface: rxq $1, txq $2, bufsize $3\n"​);​
 +            next;
 +        }
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show debug"
 +sub ShowDebug {
 +    print STDERR " ​   In ShowDebug: $_" if ($debug);
 +    my($lines) = 0;
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        /^No matching debug flags set$/ && next;
 +        /^No debug flags set$/ && next;
 +        ProcessHistory("​COMMENTS","​keysort","​J1","​!DEBUG:​ $_");
 +        $lines++;
 +    }
 +    if ($lines) {
 +        ProcessHistory("​COMMENTS","​keysort","​J0","​!\n"​);​
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show diagbus"​
 +# This will create arrays for hw info.
 +sub ShowDiagbus {
 +    # Skip if this is not a 7000, 70[01]0, or 7500.
 +    print STDERR " ​   In ShowDiagbus:​ $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +        tr/\015//d;
 +        last if (/​^$prompt/​);​
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        #return(1) if ($type !~ /^7[05]/);
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(-1) if (/command authorization failed/i);
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        if (/^\s*Slot (\d+):/i) {
 +            $slot = $1;
 +            next;
 +        } elsif (/^\s*Slot (\d+) \(virtual\):/​i) {
 +            $slot = $1;
 +            next;
 +        } elsif (/​^\s*(.*Processor.*|.*controller|.*controler|.*Chassis Interface)(,​ FRU\s?:​.*)?,​ HW rev (\S+), board revision (\S+)/i) {
 +            $board = $1;
 +            $hwver = $3;
 +            $boardrev = $4;
 +            if ($board =~ /​Processor/​) {
 +                if ($board =~ /7000 Route\/​Switch/​) {
 +                    $board = "​RSP7000";​
 +                } elsif ($board =~ /​Route\/​Switch Processor (\d)/) {
 +                    $board = "​RSP$1";​
 +                } elsif ($board =~ /Route/) {
 +                    $board = "​RP";​
 +                } elsif ($board =~ /Silicon Switch/) {
 +                    $board = "​SSP";​
 +                } elsif ($board =~ /Switch/) {
 +                    $board = "​SP";​
 +                    $board = "SSP $sspmem"​ if $ssp;
 +                } elsif ($board =~ /ATM/) {
 +                    $board = "​AIP";​
 +                }
 +            } elsif ($board =~ /(.*) controller/​i) {
 +                $board = $1;
 +            }
 +            # hwucode{$slot} defined in ShowContCbus
 +            if (defined $hwucode{$slot}) {
 +                ProcessHistory("​SLOT","","","​!\n!Slot $slot/​$board:​ hvers $hwver rev $boardrev ucode $hwucode{$slot}\n"​);​
 +            } else {
 +                ProcessHistory("​SLOT","","","​!\n!Slot $slot/​$board:​ hvers $hwver rev $boardrev\n"​);​
 +            }
 +            # These are also from the ShowContCbus
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ $ucode{$slot}\n"​) if (defined $ucode{$slot});​
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ memd $hwmemd{$slot},​ cache $hwmemc{$slot}\n"​)
 +            if ((defined $hwmemd{$slot}) && (defined $hwmemc{$slot}));​
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ $hwbuf{$slot}\n"​) if (defined $hwbuf{$slot});​
 +            next;
 +        }
 +        /Serial number: (\S+)\s*Part number: (\S+)/ &&
 +            ProcessHistory("​SLOT","","",​
 +                        "!Slot $slot/​$board:​ part $2, serial $1\n") &&
 +            next;
 +        /​^\s*Controller Memory Size: (.*)$/ &&
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ $1\n") &&
 +            next;
 +        if (/PA Bay (\d) Information/​) {
 +            $pano = $1;
 +            if ("​PA"​ =~ /$board/) {
 +                ($s,$c) = split(/​\//,​$board);​
 +                $board = "​$s/​$c/​PA $pano";​
 +            } else {
 +                $board =~ s/\/PA \d//;
 +                $board = "​$board/​PA $pano";​
 +            }
 +            next;
 +        }
 +        /\s+(.*) (IP|PA), (\d) ports?,( \S+,)? (FRU\s?: )?(\S+)/ &&
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ type $6, $3 ports\n"​) &&
 +            next;
 +        /\s+(.*) (IP|PA)( \(\S+\))?, (\d) ports?/ &&
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ type $1$3, $4 ports\n"​) &&
 +            next;
 +        /^\s*HW rev (\S+), Board revision (\S+)/ &&
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ hvers $1 rev $2\n") &&
 +            next;
 +        /Serial number: (\S+)\s*Part number: (\S+)/ &&
 +            ProcessHistory("​SLOT","","","​!Slot $slot/​$board:​ part $2, serial $1\n") && next;
 +    }
 +    return(0);
 +}
 +
 +# This routine parses "show diag" for the gsr, 7200, 3700, 3600, 2600.
 +# This will create arrays for hw info.
 +sub ShowDiag {
 +    print STDERR " ​   In ShowDiag: $_" if ($debug);
 +
 +    while (<​INPUT>​) {
 +REDUX: ​ tr/\015//d;
 +        if (/​^$prompt/​) { $found_diag = 1; last};
 +        next if (/​^(\s*|\s*$cmd\s*)$/​);​
 +        return(1) if (/Line has invalid autocommand /);
 +        return(1) if (/(Invalid (input|command) detected|Type help or )/i);
 +        return(0) if ($found_diag); ​            # Only do this routine once
 +        return(-1) if (/command authorization failed/i);
 +        /^$/ && next;
 +        # the pager can not be disabled per-session on the PIX
 +        if (/^(<-+ More -+>)/) {
 +            my($len) = length($1);
 +            s/​^$1\s{$len}//;​
 +        }
 +
 +        s/Port Packet Over SONET/POS/;
 +        if (/​^\s*SLOT\s+(\d+)\s+\((.*)\):​ (.*)/) {
 +            $slot = $1;
 +            ProcessHistory("​SLOT","","","​!\n"​);​
 +            ProcessHistory("​SLOT","​keysort","​A","​!Slot $slot: $3\n"​);​
 +            next;
 +        }
 +        if (/​^\s*NODE\s+(\S+) : (.*)/) {
 +            $slot = $1;
 +            ProcessHistory("​SLOT","","","​!\n"​);​
 +            ProcessHistory("​SLOT","​keysort","​A","​!Slot $slot: $2\n"​);​
 +            next;
 +        }
 +        if (/​^\s*PLIM\s+(\S+) : (.*)/) {
 +            $slot = $1 . " PLIM";
 +            ProcessHistory("​SLOT","","","​!\n"​);​
 +            ProcessHistory("​SLOT","​keysort","​A","​!Slot $slot: $2\n"​);​
 +            next;
 +        }
 +        if (/​^\s*RACK\s+(\S+) : (.*)/) {
 +            $slot = "​Rack/"​ . $1;
 +            ProcessHistory("​SLOT","","","​!\n"​);​
 +            ProcessHistory("​SLOT","​keysort","​A","​!Slot $slot: $2\n"​);​
 +            next;
 +        }
 +        if (/​^\s+MAIN:​\s* type \S+,​\s+(.*)/​) {
 +            local($part) = $1;
 +            $_ = <​INPUT>;​
 +            if (/^\s+(HW version|Design Release) (\S+)\s+S\/​N (\S+)/i) {
 +                ProcessHistory("​SLOT","​keysort","​AM","​!Slot $slot/MAIN: part $part, serial $3\n"​);​
 +                ProcessHistory("​SLOT","​keysort","​AM","​!Slot $slot/MAIN: hvers $2\n"​);​
 +            } else {
 +                ProcessHistory("​SLOT","​keysort","​AM","​!Slot $slot/MAIN: part $part\n"​);​
 +                goto REDUX;
 +            }
 +            next;
 +        }
 +        if (/​^\s+MAIN:​\s* board type \S+$/) {
 +            $_ = <​INPUT>;​
 +            tr/\015//d;
 +            if (/​^\s+(.+)$/​) {
 +                local($part) = $1;
 +                $_ = <​INPUT>;​
 +                tr/\015//d;
 +                if (/^\s+dev (.*)$/) {
 +                    local($dev) = $1;
 +                    $_ = <​INPUT>;​
 +                    if (/^\s+S\/N (\S+)/) {
 +                        ProcessHistory("​SLOT","​keysort","​AM","​!Slot $slot/MAIN: part $part, dev $dev, serial $1\n"​);​
 +                    } else {
 +                        ProcessHistory("​SLOT","​keysort","​AM","​!Slot $slot/MAIN: part $part, dev $dev\n"​);​
 +                        goto REDUX;
 +                   }
 +                } else {
 +                    ProcessHistory("​SLOT","​keysort","​AM","​!Slot $slot/MAIN: part $part\n"​);​
 +                    goto REDUX;
 +                }
 +            } else {
 +                goto REDUX;
 +            }
 +            next;
 +        }
 +        if (/​^c3700\s+(io-board|mid-plane)/​i) {
 +            $slot = $1;
 +            ProcessHistory("​SLOT","","","​!\n"​);​
 +            ProcessHistory("​SLOT","​keysort","​A","​!Slot $slot: part $1\n"​);​
 +            next;
 +        }
 +        if (/ Engine:​\s+(.*)/​) {
 +            ProcessHistory("​SLOT","​keysort","​AE","​!Slot $slot/​Engine:​ $1\n"​);​
 +        }
 +        if (/​FRU:​\s+Linecard\/​Module:​\s+(\S+)/​) {
 +            ProcessHistory("​SLOT","​keysort","​AF","​!Slot $slot/FRU: Linecard/​Module:​ $1\n"​);​
 +            next;
 +        }
 +        if (/​\s+Processor Memory:​\s+(\S+)/​) {
 +            ProcessHistory("​SLOT","​keysort","​AF","​!Slot $slot/FRU: Processor Memory: $1\n"​);​
 +            next;
 +        }
 +        if (/\s+Packet Memory:​\s+(\S+)/​) {
 +            ProcessHistory("​SLOT","​keysort","​AF","​!Slot $slot/FRU: Packet Memory: $1\n"​);​
 +            next;
 +        }
 +        if (/\s+Route Memory:​\s+(\S+)/​) {
 +            ProcessHistory("​SLOT","​keysort","​AF","​!Slot $slot/FRU: Route Memory: $1\n"​);​
 +            next;
 +        }
 +        if (/​^\s+PCA:​\s+(.*)/​) {
 +            local($part) = $1;
 +            $_ = <​INPUT>;​
 +            if (/^\s+(HW version|design release) (\S+)\s+S\/​N (\S+)/i) {
 +                ProcessHistory("​SLOT","​keysort","​C1","​!Slot $slot/PCA: part $part, serial $3\n"​);​
 +                ProcessHistory("​SLOT","​keysort","​C2","​!Slot $slot/PCA: hvers $2\n"​);​
 +            } else {
 +                ProcessHistory("​SLOT","​keysort","​C1","​!Slot $slot/PCA: part $part\n"​);​
 +                goto REDUX;
 +            }
 +            next;
 +        }
 +        if (/^\s+MBUS: .*\)\s+(.*)/​) {
 +            local($tmp) = "!Slot $slot/MBUS: part $1";
 +            $_ = <​INPUT>;​
 +            /^\s+HW version (\S+)\s+S\/​N (\S+)/ &&
 +                ProcessHistory("​SLOT","​keysort","​MB1","​$tmp,​ serial $2\n") &&
 +                ProcessHistory("​SLOT","​keysort","​MB2","​!Slot $slot/MBUS: hvers $1\n"​);​
 +            next;
 +        }
 +        if (/^\s+MBUS Agent Software version (.*)/) {
 +            ProcessHistory("​SLOT","​keysort","​MB3","​!Slot $slot/MBUS: software $1\n"​);​
 +            next;
 +        }
 +        if (/^\s+PLD: (.*)/) {
 +            ProcessHistory("​SLOT","​keysort","​P","​!Slot $slot/PLD: $1\n"​);​
 +            next;
 +        }
 +        if (/​^\s+MONLIB:​ (.*)/) {
 +            ProcessHistory("​SLOT","​keysort","​Q","​!Slot $slot/​MONLIB:​ $1\n"​);​
 +            next;
 +        }
 +        if (/^\s+ROM Monitor version (.*)/) {
 +            ProcessHistory("​SLOT","​keysort","​R","​!Slot $slot/ROM Monitor: version $1\n"​);​
 +            next;
 +        }
 +        if (/​^\s+ROMMON:​ Version (.*)/) {
 +            ProcessHistory("​SLOT","​keysort","​R","​!Slot $slot/​ROMMON:​ version $1\n"​);​
 +            next;
 +        }
 +        if (/​^\s+Fabric Downloader version used (.*)/