Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Door joeVolg meer door de auteur:
Over: Ik vind het leuk om aan zo ongeveer alles te sleutelen, soms komt het wel goed. Veel plezier met het bekijken van de projecten, probeer iets open te scheuren en laat me weten hoe het gaat. proost, -Joe Meer over Joe »
Deze instructable toont een script dat kan worden gebruikt om back-ups van een netscreen-firewall met ScreenOS te automatiseren.
Stap 1: Vereisten
Dit script is geschreven in expect en gaat ervan uit dat je SSH hebt ingeschakeld op je netscreen en een linux-omgeving. Als je nog nooit hebt uitgecheckt, heeft Oreilly een geweldig boek "Exploring Expect"
Stap 2: Variabelen
We beginnen met het instellen van enkele variabelen. U wilt de variabelen poort/gebruikersnaam/wachtwoord/netscreen/prompt aanpassen aan uw omgeving. #!/usr/bin/expect# Verwacht script voor back-up configuratie van netscreen firewalls#Joe #Stel een varsset time-out in 60set gebruiker "root"stel wachtwoord in "wachtwoord"stel poort "2022"stel netscreen in "foo.bar.com"set basedir "/mnt/netapp/backups/foo.bar.com"set log "[timestamp -format %Y-%m-%d]-config.txt"set mailto "[email protected]"set mailsubject "Fout: netscreen back-up mislukt [timestamp -format %Y-%m-%d] "set mailfail ""stel prompt "foo-> " in
Stap 3: Verbinden
Vervolgens zullen we in het script proberen connect.send_user "NetScren Backup Script\n"send_user "Verbinding maken met $netscreen\n"spawn ssh $user@$netscreen -p$port expect { "password:" { send "$password\ r" expect { "$prompt" { send_user "Connected" } "Toestemming geweigerd" { send_user "Ongeldig wachtwoord, exiting" set mailfail "Ongeldig wachtwoord, exiting" close } timeout { send_user "Geen prompt terug" set mailfail "Geen prompt terug " close } } } "Geen route naar host" { send_user "Kan geen verbinding maken met $netscreen\n" set mailfail "Kan geen verbinding maken met $netscreen\n" } "Naam of service niet bekend" { send_user "Kan geen verbinding maken met $netscreen\n" set mailfail "Kan geen verbinding maken met $netscreen\n" } timeout{ send_user "Time-out verbinding met $netscreen" set mailfail "Time-out verbinding met $netscreen" close } }if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Stap 4: Schakel paging uit
U moet paging uitschakelen - of meer prompt op het netscreen. #Disable the "more" promptsend "set console page 0\r"expect { "$prompt" { send_user "\nPaging Disabled\n" } default { send "ScreenOS did not behalve paging option.\n" set mailfail "ScreenOS deed niet behalve paging-optie." close } timeout { send_user "ScreenOS niet behalve paging-optie\n" set mailfail "ScreenOS behalve paging-optie." sluiten }}if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Stap 5: Configuratie ophalen
We krijgen nu de config. send_user "Configuratie downloaden\n"log_file $basedir/$logsend "get config\r"expect { "$prompt" { log_file send_user "\nConfiguratie gedownload\n" } time-out { send_user "\nFout tijdens downloaden van configuratie." set mailfail "Fout tijdens downloaden van configuratie." }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Stap 6: Controleer of de configuratie de juiste maat heeft
We zullen weten of de configuratie minimaal 1k is.set bestandsgrootte [bestandsgrootte $basedir/$log]if { $filesize <= 1024} { send_user "Netscreen-configuratie is te klein, onderzoek alstublieft\n" set mailfail " Netscreen-configuratie is te klein, onderzoek alstublieft\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Stap 7: Opruimen
Laten we een kleine schoonmaak uitvoeren om configuraties ouder dan twee weken te verwijderen. #Remove config ouder dan 2 weeksexec find $basedir -name '*config.txt*' -mtime +14
Stap 8: Allemaal samen
Zet het nu allemaal bij elkaar. Het is als tekstbestand bijgevoegd. Het stuurt e-mails over eventuele fouten. #!/usr/bin/expect# Verwacht script voor back-upconfiguratie van netscreen-firewalls#Joe#Stel een varsset-time-out in 60set gebruiker "root"stel wachtwoord in "wachtwoord"stel poort "2022"stel netscreen in "foo.bar.com"set basedir "/mnt/netapp/backups/foo.bar.com"set log "[timestamp -format %Y-%m-%d]-config.txt"set mailto "[email protected]"set mailsubject "Fout: netscreen back-up mislukt [timestamp -format %Y-%m-%d] "set mailfail ""set prompt "foo-> "send_user "NetScren Backup Script\n"send_user "Verbinding maken met $netscreen\n"spawn ssh $user@$ netscreen -p$port expect { "password:" { send "$password\r" expect { "$prompt" { send_user "Connected" } "Toestemming geweigerd" { send_user "Ongeldig wachtwoord, exiting" set mailfail "Ongeldig wachtwoord, exiting " close } timeout { send_user "Geen prompt terug" set mailfail "Geen prompt terug" close } } } "Geen route naar host" { send_user "Kan geen verbinding maken met $netscreen\n" set mailfail "Kan geen verbinding maken met $netscreen\ n" } "Naam of service niet bekend" { send_user "Kan geen verbinding maken met $netscreen\n" s et mailfail "Kan geen verbinding maken met $netscreen\n" } timeout{ send_user "Time-out verbinding met $netscreen" set mailfail "Time-out verbinding maken met $netscreen" close } }if { $mailfail!= "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Nu dat voorbij is, ga verder#Schakel de "meer" prompt uitstuur "set console page 0\r"expect { "$prompt" { send_user "\nPaginering uitgeschakeld\ n" } default { send "ScreenOS heeft niet behalve paging-optie.\n" set mailfail "ScreenOS heeft niet behalve paging-optie." close } timeout { send_user "ScreenOS niet behalve paging-optie\n" set mailfail "ScreenOS behalve paging-optie." close }}if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}send_user "Configuratie downloaden\n"log_file $basedir/$logsend "get config\r "expect { "$prompt" { log_file send_user "\nConfiguratie gedownload\n" } time-out { send_user "\nFout tijdens downloaden van configuratie." set mailfail "Fout tijdens downloaden van configuratie." }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}stel bestandsgrootte in [bestandsgrootte $basedir/$log]if { $bestandsgrootte <= 1024 } { send_user "Netschermconfiguratie is te klein, onderzoek alstublieft\n" set mailfail "Netschermconfiguratie is te klein, onderzoek alstublieft\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Remove config ouder dan 2 wekenexec vinden $basedir -name '*config.txt*' -mtime +14