Jak wykonać kopię zapasową zapory sieciowej Netscreen: 8 kroków
Jak wykonać kopię zapasową zapory sieciowej Netscreen: 8 kroków
Anonim

Autor: joeFollow Więcej autora:

O: Lubię majstrować przy prawie wszystkim, czasami w końcu to się udaje. Baw się dobrze oglądając projekty, spróbuj rozerwać coś i daj mi znać, jak to działa. okrzyki, -Joe Więcej o joe »

Ta instrukcja pokazuje skrypt, którego można użyć do zautomatyzowania tworzenia kopii zapasowych zapory sieciowej z systemem ScreenOS.

Krok 1: Wymagania

Ten skrypt jest napisany w expect i zakłada, że masz włączone SSH na swoim netscreenie i w środowisku linuksowym. Jeśli nigdy się nie spodziewałeś, Oreilly ma świetną książkę „Exploring Expect”

Krok 2: Zmienne

Zaczniemy od ustawienia niektórych zmiennych. Będziesz chciał ustawić zmienne port/nazwa użytkownika/hasło/netscreen/prompt, aby pasowały do twojego środowiska. #!/usr/bin/expect#Oczekuj skryptu do tworzenia kopii zapasowej konfiguracji firewalli netscreen#Joe #Ustaw jakiś limit czasu varsset 60set użytkownika "root"ustaw hasło "hasło"ustaw port "2022"ustaw netscreen "foo.bar.com"set basedir "/mnt/netapp/backups/foo.bar.com"set log "[sygnatura czasowa -format %Y-%m-%d]-config.txt"set mailto "[email protected]"set mailsubject "Błąd: netscreen kopia zapasowa nie powiodła się [timestamp -format %Y-%m-%d] "set mailfail""ustaw monit "foo->"

Krok 3: Połącz

Następnie w skrypcie spróbujemy połączyć.send_user "NetScren Backup Script\n"send_user "Łączenie z $netscreen\n"spawn ssh $user@$netscreen -p$port oczekiwać { "password:" { send "$password\ r" oczekują { "$prompt" { send_user "Połączono" } "Odmowa dostępu" { send_user "Nieprawidłowe hasło, wyjście" set mailfail "Nieprawidłowe hasło, wyjście" close } timeout { send_user "Nie zwrócono monitu" set mailfail "Nie zwrócono monitu " close } } } "Brak trasy do hosta" { send_user "Nie można połączyć się z $netscreen\n" set mailfail "Nie można połączyć się z $netscreen\n" } "Nieznana nazwa lub usługa" { send_user "Nie można połączyć się z $netscreen\n" set mailfail "Nie można połączyć się z $netscreen\n" } timeout{ send_user "Przekroczono limit czasu połączenia z $netscreen" set mailfail "Przekroczono limit czasu połączenia z $netscreen" close } }if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" wyjście}

Krok 4: Wyłącz stronicowanie

Musisz wyłączyć stronicowanie - lub więcej monitu na ekranie sieciowym. #Wyłącz monit "więcej" wyślij "ustaw stronę konsoli 0\r"expect { "$prompt" { send_user "\nStronicowanie wyłączone\n" } default { send "ScreenOS nie z wyjątkiem opcji stronicowania.\n" set mailfail "ScreenOS tak nie z wyjątkiem opcji stronicowania." close } timeout { send_user "ScreenOS nie wyjął opcji stronicowania\n" set mailfail "ScreenOS nie wyjął opcji stronicowania." zamknij }}if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}

Krok 5: Pobierz konfigurację

Otrzymamy teraz konfigurację. send_user "Pobieranie konfiguracji\n"log_file $basedir/$logsend "get config\r"expect { "$prompt" { log_file send_user "\nKonfiguracja pobrana\n" } limit czasu { send_user "\nBłąd podczas pobierania konfiguracji." set mailfail "Błąd podczas pobierania konfiguracji." }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}

Krok 6: Sprawdź, czy konfiguracja ma odpowiedni rozmiar

Będziemy wiedzieć sprawdzić, czy konfiguracja ma przynajmniej 1k.set filesize [rozmiar pliku $basedir/$log]if { $filesize <= 1024 } { send_user "Konfiguracja Netscreen jest za mała, sprawdź\n" set mailfail " Konfiguracja Netscreen jest za mała, sprawdź\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}

Krok 7: Oczyszczanie

Przeprowadźmy małe porządki, aby usunąć konfiguracje starsze niż dwa tygodnie. #Usuń konfigurację starszą niż 2 tygodnieexec find $basedir -name '*config.txt*' -mtime +14

Krok 8: Wszyscy razem

Złóż to wszystko razem. Jest dołączony jako plik tekstowy. Wyśle e-maile o wszelkich awariach. #!/usr/bin/expect#Oczekuj, że skrypt wykona kopię zapasową konfiguracji zapór sieciowych netscreen#Joe#Ustaw limit czasu varsset 60set użytkownika "root"ustaw hasło "hasło"ustaw port "2022"ustaw netscreen "foo.bar.com"set basedir "/mnt/netapp/backups/foo.bar.com"set log "[sygnatura czasowa -format %Y-%m-%d]-config.txt"set mailto "[email protected]"set mailsubject "Błąd: netscreen kopia zapasowa nie powiodła się [timestamp -format %Y-%m-%d] "set mailfail ""set prompt "foo-> "send_user "Skrypt kopii zapasowej NetScren\n"send_user "Łączenie z $netscreen\n"spawn ssh $user@$ netscreen -p$port oczekiwać { "hasło:" { send "$hasło\r" oczekiwać { "$prompt" { send_user "Połączono" } "Odmowa dostępu" { send_user "Nieprawidłowe hasło, wyjście" set mailfail "Nieprawidłowe hasło, wyjście " close } timeout { send_user "Nie zwrócono podpowiedzi" set mailfail "Nie zwrócono podpowiedzi" close } } } "Brak trasy do hosta" { send_user "Nie można połączyć się z $netscreen\n" set mailfail "Nie można połączyć się z $netscreen\ n" } "Nieznana nazwa lub usługa" { send_user "Nie można połączyć się z $netscreen\n" s et mailfail "Nie można połączyć się z $netscreen\n" } timeout{ send_user "Przekroczono limit czasu połączenia z $netscreen" set mailfail "Przekroczono limit czasu połączenia z $netscreen" close } }if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Teraz to już koniec, kontynuuj#Wyłącz monit "więcej"wyślij "ustaw stronę konsoli 0\r"expect { "$prompt" { send_user "\nStronicowanie wyłączone\ n" } default { send "ScreenOS nie wyjął opcji stronicowania.\n" set mailfail "ScreenOS nie wyjął opcji stronicowania." close } timeout { send_user "ScreenOS nie wyjął opcji stronicowania\n" set mailfail "ScreenOS nie wyjął opcji stronicowania." zamknij }}if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}send_user "Pobieranie konfiguracji\n"log_file $basedir/$logsend "get config\r "expect { "$prompt" { log_file send_user "\nKonfiguracja pobrana\n" } limit czasu { send_user "\nBłąd podczas pobierania konfiguracji." set mailfail "Błąd podczas pobierania konfiguracji." }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}set rozmiar pliku [rozmiar pliku $basedir/$log]if { $rozmiar pliku <= 1024 } { send_user "Konfiguracja Netscreen jest za mała, sprawdź\n" set mailfail "Konfiguracja Netscreen jest za mała, sprawdź\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Usuń konfigurację starsze niż 2 tygodnieexec find $basedir -name '*config.txt*' -mtime +14