Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Följ mer av författaren:
Om: Jag gillar att pyssla med nästan vad som helst, ibland löser det sig i slutändan. Ha kul att titta på projekten, prova att riva upp något och låt mig veta hur det går. heja, -Joe Mer om joe »
Denna instruerbara visar ett skript som kan användas för att automatisera säkerhetskopior av en nätverksskärm brandvägg som kör ScreenOS.
Steg 1: Krav
Detta skript är skrivet i förväntan och förutsätter att du har SSH påslagen på din nätskärm och en Linux -miljö. Om du aldrig har checkat ut förvänta dig, har Oreilly en bra bok "Exploring Expect"
Steg 2: Variabler
Vi börjar med att ställa in några variabler. Du kommer att vilja ställa in variablerna port/användarnamn/lösenord/netscreen/prompt för att matcha din miljö. #!/usr/bin/förvänta dig#Förvänta skriptet att säkerhetskopiera konfigurationen av nätverkets brandväggar#Joe #Set några varsset timeout 60set user "root" set password "password" set port "2022" set netscreen "foo.bar.com" set basedir "/mnt/netapp/backups/foo.bar.com"set logg" [tidsstämpel -format%Y-%m-%d] -konfig.txt "ställ mailto" [email protected] "ange mailsubject" Fel: netscreen säkerhetskopiering misslyckades [tidsstämpel -format%Y-%m-%d] "ställ in mailfail" "ställ in prompt" foo->"
Steg 3: Anslut
Nästa i skriptet försöker vi och connect.send_user "NetScren Backup Script / n" send_user "Ansluter till $ netscreen / n" spawn ssh $ user@$ netscreen -p $ port förväntar {"lösenord:" {send "$ lösenord / r "förvänta dig {" $ prompt "{send_user" Connected "}" Tillåtelse nekad "{send_user" Ogiltigt lösenord, avslutar "set mailfail" Ogiltigt lösenord, avslutar "close} timeout {send_user" Ingen prompt returneras "ställ mailfail" Ingen prompt returneras "close}}}" Ingen väg till värd "{send_user" Kan inte ansluta till $ netscreen / n "set mailfail" Kan inte ansluta till $ netscreen / n "}" Namn eller tjänst inte känd "{send_user" Kan inte ansluta till $ netscreen / n "set mailfail" Kan inte ansluta till $ netscreen / n "} timeout {send_user" Timeout som ansluter till $ netscreen "set mailfail" Timeout ansluter till $ netscreen "close}} om {$ mailfail! =" "} { exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}
Steg 4: Stäng av sökning
Du måste stänga av personsökning - eller mer snabbmeddelande på nätskärmen. #Inaktivera "mer" promptsend "set -konsolsidan 0 / r" förvänta dig {"$ prompt" {send_user "\ nPaging Disabled / n"} standard {send "ScreenOS gjorde inte undantag för personsökningsalternativ. / N" set mailfail "ScreenOS gjorde inte förutom personsökningsalternativ. " close} timeout {send_user "ScreenOS gjorde inte utom personsökningsalternativ / n" ställde in mailfail "ScreenOS gjorde inte undantag för personsökningsalternativ." close}} if {$ mailfail! = ""} {exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}
Steg 5: Hämta konfig
Vi får nu konfigurationen. send_user "Hämtar konfiguration / n" log_file $ basedir/$ logsend "get config / r" förvänta dig {"$ prompt" {log_file send_user "\ nKonfiguration nedladdad / n"} timeout {send_user "\ nFel under nedladdning av konfiguration." set mailfail "Fel vid konfigurationsnedladdning." }} closeif {$ mailfail! = ""} {exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}
Steg 6: Kontrollera om konfigurationen har rätt storlek
Vi vet att kontrollera om konfigurationen är minst 1k.set filstorlek [filstorlek $ basedir/$ log] om {$ filesize <= 1024} {send_user "Netscreen config är för liten, undersök / n" set mailfail " Netscreen -konfigurationen är för liten, undersök / n "exec /bin /mail -s $ mailsubject $ mailto <<" $ mailfail "exit}
Steg 7: Rengöring
Låt oss köra lite sanering för att ta bort konfig som är äldre än två veckor. #Remove config äldre än 2 veckorsexec hitta $ basedir -name '*config.txt*' -mtime +14
Steg 8: Alla tillsammans
Lägg ihop allt nu. Den bifogas som en textfil. Det kommer att skicka e -postmeddelanden om eventuella fel. #!/usr/bin/förvänta dig#Förvänta skriptet att säkerhetskopiera konfigurationen av nätverksskärmens brandväggar#Joe#Ange några varsset timeout 60set användare "root" set lösenord "lösenord" set port "2022" set netscreen "foo.bar.com" set basedir "/mnt/netapp/backups/foo.bar.com"set logg" [tidsstämpel -format%Y-%m-%d] -konfig.txt "ställ mailto" [email protected] "ange mailsubject" Fel: netscreen säkerhetskopiering misslyckades [tidsstämpel -format%Y-%m-%d] "set mailfail" "set prompt" foo-> "send_user" NetScren Backup Script / n "send_user" Ansluter till $ netscreen / n "spawn ssh $ user@$ netscreen -p $ port förvänta {"lösenord:" {skicka "$ lösenord / r" förvänta {"$ prompt" {send_user "Ansluten"} "Tillåtelse nekad" {send_user "Ogiltigt lösenord, avsluta" set mailfail "Ogiltigt lösenord, lämnar "close} timeout {send_user" Ingen prompt returneras "ställ in mailfail" Ingen prompt returneras "close}}}" Ingen rutt till värd "{send_user" Kan inte ansluta till $ netscreen / n "set mailfail" Kan inte ansluta till $ netscreen / n "}" Namn eller tjänst inte känd "{send_user" Det går inte att ansluta till $ netscreen / n "s et mailfail "Det går inte att ansluta till $ netscreen / n"} timeout {send_user "Timeout ansluter till $ netscreen" set mailfail "Timeout ansluter till $ netscreen" close}} om {$ mailfail! = ""} {exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit} #Nu när det är över, fortsätt#Inaktivera "mer" promptsend "set -konsolsidan 0 / r" förvänta dig {"$ prompt" {send_user "\ nPaging Disabled / n "} standard {skicka" ScreenOS gjorde inte undantag för personsökningsalternativ. / n "ställ in postfail" ScreenOS gjorde inte undantag för personsökningsalternativ. " close} timeout {send_user "ScreenOS gjorde inte utom personsökningsalternativ / n" ställde in mailfail "ScreenOS gjorde inte undantag för personsökningsalternativ." close}} if {$ mailfail! = ""} {exec/bin/mail -s $ mailsubject $ mailto << "$ mailfail" exit} send_user "Hämtar konfiguration / n" log_file $ basedir/$ logsend "få config / r "förvänta dig {" $ prompt "{log_file send_user" / nKonfiguration nedladdad / n "} timeout {send_user" / nFel under nedladdning av konfiguration. " set mailfail "Fel vid konfigurationsnedladdning." }} closeif {$ mailfail! = ""} {exec/bin/mail -s $ mailsubject $ mailto << "$ mailfail" exit} ställ in filstorlek [filstorlek $ basedir/$ log] om {$ filesize <= 1024} {send_user "Netscreen config är för liten, undersök / n" set mailfail "Netscreen config är för liten, undersök / n" exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit} #Remove config äldre än 2 veckorsexec hitta $ basedir -name '*config.txt*' -mtime +14