#! /usr/bin/perl # Backup-Tool für CISCO Router und Switch # # Das Skript setzt voraus, dass der TFTP-Server Schreibrecht # auf die Zieldateien hat. Befindet sich der TFTP-Server am lokalen # Rechner, kann durch Angabe der Option 'touch=xxx' das Verzeichnis # des TFTP-Servers angegeben werden. Dann werden vor der Übertragung # die Zieldateien mit den bnötigten Rechten erzeugt. # # $Id: cisco_backup.pl,v 1.2 2002/06/17 12:46:01 pische Exp pische $ #################################################################### use Getopt::Long; use Net::Telnet::Cisco; my $USAGE = < \$login, "pw:s" => \$pw, "en:s" => \$en, "tftp=s" => \$backup_host, "device=s" => \$device, "typ:s" => \$type, "version:s" => \$ios_version, "touch:s" => \$touch, "help" => \$help); if ($help) { die "$USAGE"; } if (!$backup_host) { die "Es muss ein TFTP-Server angegeben werden!\n"; } if (!$device) { die "Es muss ein Zielgerät angegeben werden!\n"; } my $session = Net::Telnet::Cisco->new(Host => $device); $session->login(Password => $pw); $session->enable($en); # Datei im TFTP-Verzeichnis erstellen, damit schreiben # vom TFTP-Server möglich ist if ($touch) { open FILE, ">/$touch/$device-confg"; close FILE; chmod 0777, "/$touch/$device-confg"; } # Kopieren der Konfiguration per TFTP nach /tftpboot my @out; if ($type eq "router") { if ($ios_version >= 12) { @out = $session->cmd("copy system:/running-config " . "tftp://$backup_host/$device-confg\n\n\n"); } elsif ($ios_version >= 11) { @out = $session->cmd("copy running-config tftp\n$backup_host\n" . "$device-confg\n"); } elsif ($ios_version >= 10) { @out = $session->cmd("write net\n$backup_host\n$device-confg\n\n"); } } elsif ($type eq "switch") { @out = $session->cmd("copy system:/running-config " . "tftp://$backup_host/$device-confg\n\n\n"); } # Ausgabe von 'show version' @out = $session->cmd("show version"); open FILE, "> /tftpboot/$device-version"; print FILE @out; close FILE; # Ausgabe von 'show tech-support' #@out = $session->cmd("show tech-support"); #open FILE, "> /tftpboot/$device-tech"; #print FILE @out; #close FILE;