## -----------------------------------------------------------------------
# Así se realizarán las copias de seguridad de los equipos Cisco o Foundry
## -----------------------------------------------------------------------
if (($type eq "Cisco") || ($type eq "Foundry")) {
if (($ip eq 'X.X.X.X')) {
# La conexión a estos PIX es por ssh, no por telnet
$ssh = Net::SSH::Expect->new (host => $ip, password=> $passbackupsdefault, user => 'admin', raw_pty => 1, ssh_option => " -c des ", timeout => 15);
$ssh->login();
$ssh->send("enable\n");
$ssh->waitfor('Password:\s*\z', 5);
$ssh->send("$passbackupsdefault");
$ssh->waitfor('#', 5);
$ssh->send("copy running-config tftp");
$ssh->waitfor('Source', 5);
$ssh->send("running-config");
$ssh->waitfor('Address', 5);
$ssh->send("$tftp_server");
$ssh->waitfor('Destination', 5);
$ssh->send("$file");
$ssh->waitfor('ARBUENOC', 15);
$ssh->close();
$flag=1;
} elsif (($ip eq 'X.X.X.X')) {
# La conexión a estos PIX es por ssh, no por telnet
$ssh = Net::SSH::Expect->new (host => $ip, password=> $passbackupsdefault, user => $userbackupsdefault, raw_pty => 1, ssh_option => " -c des ", timeout => 15);
$ssh->login();
$ssh->send("enable\n");
$ssh->waitfor('Password:\s*\z', 5);
$ssh->send('miPasswordFast!');
$ssh->waitfor('#', 5);
$ssh->send("write net");
$ssh->waitfor('#', 5);
$ssh->close();
`mv /tftpboot/tftpboot /tftpboot/$file`;
$flag=1;
###################################################################################################
###### EL USO DE LOS IF ANTERIORES YA EXISTÍA ANTES DE QUE YO TOMARA EL SCRIPT. POR ESO NO SÉ ####
###### CÓMO PUEDO COMBINAR OPENSSH CON EXPECT PARA REALIZAR LO QUE SIGUE A CONTINUACIÓN. ####
###################################################################################################
} else {
@conn1 = conectar_ssh($ip,$userbackupsdefault,$passbackupsdefault);
if (($conn1[0])) {
$errores_1.="<br><font color='red'>Error01=$conn1[0]\n<br></font>";
} else {
if (($ip eq 'X.X.X.X') || ($ip eq 'X.X.X.X')) {
@out=$conn1[1]->capture({stdin_data =>"copy running-config tftp\n\n$tftp_server\n$file\n"});
} else {
if ($ip =~ m/^10.16/) {
@out=$conn1[1]->capture({stdin_data =>"terminal width 512\nterminal length 0\ncopy running-config tftp\n$tftp_server_p\n$file\n"});
} else {
@out=$conn1[1]->capture({stdin_data =>"copy running-config tftp\n$tftp_server\n$file\n"});
}
}
if (!($out[0])) {
$out[0] = "";
}
if (!($out[1])) {
$out[1] = "";
}
if (($out[0] =~ /'Not logged in'/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02=Problemas al copiar la configuracion\n<br></font>";
} else {
$flag=1;
if ((($device_type eq 'Switch') || ($device_type eq 'Switch Principal Nodo')) && ($type eq "Cisco")) {
if (($ip eq 'X.X.X.X') || ($ip eq 'X.X.X.X')) {
@out=$conn1[1]->capture({stdin_data =>"copy flash:vlan.dat tftp\n\n$tftp_server\n$filevlan\n"});
} else {
@out=$conn1[1]->capture({stdin_data =>"copy flash:vlan.dat tftp\n$tftp_server\n$filevlan\n"});
}
if (!($out[0])) {
$out[0] = "";
}
if (!($out[1])) {
$out[1] = "";
}
if (($out[0] =~ /'Not logged in'/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02=Problemas al copiar vlan.dat\n<br></font>";
} else {
$flagvlan=1;
}
}
}
}
}
sleep(20);
if (!(-e "/tftpboot/$file") && ($flag == 1)) {
$errores_3.="<br><font color='red'>Error03=Archivo vacio: /tftpboot/$file\n<br></font>";
}
if (!(-e "/tftpboot/$filevlan") && ($flagvlan == 1)) {
$errores_3.="<br><font color='red'>Error03=Archivo vacio: /tftpboot/$filevlan\n<br></font>";
}
## -----------------------------------------------------------------------
# Así se realizarán las copias de seguridad de los equipos Juniper
## -----------------------------------------------------------------------
} elsif ($type eq "Juniper") {
$filegz="$file.gz";
@conn1 = conectar_ssh($ip,$userbackupsdefault,$passbackupsdefault);
open (FILTER,"> /tftpboot/$filefilter");
open (INTFILTER,"> /tftpboot/$fileinterfacesfilter");
open (COS,"> /tftpboot/$filecos");
open (CHASSIS,"> /tftpboot/$filechassis");
open (ISIS,"> /tftpboot/$fileisis");
if ($conn1[0]) {
$errores_1.="<br><font color='red'>Error01=$conn1[0]\n<br></font>";
} else {
## -----------------------------------------------------------------------
#Se obtiene la información de configuración de CoS
## -----------------------------------------------------------------------
@out=$conn1[1]->capture({stdin_data =>"show configuration class-of-service | display set | match interface | no-more"});
print "show configuration class-of-service | display set | match interface | no-more\n";
if (($out[0] =~ /Not logged in/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02J01=Problemas al copiar la configuracion $out[0]\n<br></font>";
} else {
foreach $line1 (@out) {
print COS "$line1";
}
}
## -----------------------------------------------------------------------
#Se obtiene la informacion de configuracion de los Filtros
## -----------------------------------------------------------------------
@out=$conn1[1]->capture({stdin_data =>"show configuration firewall | display set | match filter | no-more"});
print "show configuration firewall | display set | match filter | no-more\n";
if (($out[0] =~ /Not logged in/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02J02=Problemas al copiar la configuracion\n<br></font>";
} else {
foreach $line1 (@out) {
print FILTER "$line1";
}
}
## -----------------------------------------------------------------------
#Se obtiene la informacion de configuracion de Interfaces con Filtros
## -----------------------------------------------------------------------
@out=$conn1[1]->capture({stdin_data =>"show configuration interfaces | display set | match filter | no-more"});
if (($out[0] =~ /Not logged in/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02J03=Problemas al copiar la configuracion\n<br></font>";
} else {
foreach $line1 (@out) {
print INTFILTER "$line1";
}
}
## -----------------------------------------------------------------------
#Se obtiene la informacion de configuracion de Interfaces con Filtros
## -----------------------------------------------------------------------
@out=$conn1[1]->capture({stdin_data =>"show chassis fpc pic-status | display xml | no-more"});
if (($out[0] =~ /Not logged in/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02J04=Problemas al copiar la configuracion\n<br></font>";
} else {
foreach $line1 (@out) {
if ((!($line1 =~ /master/)) ) {
if ((!($line1 =~ /ebackups/)) ) {
print CHASSIS "$line1";
}
}
}
}
## -----------------------------------------------------------------------
#Se obtiene la informacion de configuracion de ISIS
## -----------------------------------------------------------------------
@out=$conn1[1]->capture({stdin_data =>"show isis adjacency | display xml | no-more"});
if (($out[0] =~ /Not logged in/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02J05=Problemas al copiar la configuracion\n<br></font>";
} else {
foreach $line1 (@out) {
if ((!($line1 =~ /master/)) ) {
if ((!($line1 =~ /ebackups/)) ) {
print ISIS "$line1";
}
}
}
}
## -----------------------------------------------------------------------
#Se obtiene el archivo de backup como tal
## -----------------------------------------------------------------------
if ($ip =~ m/^10.16/) {
@out=$conn1[1]->capture({stdin_data =>"file copy /config/juniper.conf.gz ftp://tftpconf:passForMakeBackups\@"."$tftp_server_p/$filegz"});
} else {
@out=$conn1[1]->capture({stdin_data =>"file copy /config/juniper.conf.gz ftp://tftpconf:passForMakeBackups\@"."$tftp_server/$filegz"});
}
print "file copy /config/juniper.conf.gz ftp://tftpconf:passForMakeBackups\@"."$tftp_server/$filegz\n";
sleep(10);
if (($out[0] =~ /Not logged in/) || ($out[0] =~ /error/) || ($out[1] =~ /error/)) {
$errores_2.="<br><font color='red'>Error02J06=Problemas al copiar la configuracion\n<br></font>";
} else {
$flag=1;
}
}
cerrar_ssh($conn1[1]);
`/bin/gunzip /tftpboot/$filegz`;
close (INTFILTER);
close (FILTER);
close (COS);
close (CHASSIS);
close (ISIS);