Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Ακολουθήστε περισσότερα από τον συγγραφέα:
Σχετικά: Μου αρέσει να ασχολούμαι με οτιδήποτε, μερικές φορές βγαίνει στο τέλος. Διασκεδάστε κοιτάζοντας τα έργα, δοκιμάστε να ανοίξετε κάτι και να μου πείτε πώς πάει. cheers, -Joe More About joe »
Αυτό το εκπαιδευτικό δείχνει ένα σενάριο που μπορεί να χρησιμοποιηθεί για την αυτοματοποίηση αντιγράφων ασφαλείας ενός τείχους προστασίας δικτύου που εκτελεί ScreenOS.
Βήμα 1: Απαιτήσεις
Αυτό το σενάριο είναι γραμμένο σε αναμονή και υποθέτει ότι έχετε ενεργοποιήσει το SSH στην οθόνη δικτύου και σε περιβάλλον Linux. Εάν δεν έχετε δοκιμάσει ποτέ να περιμένετε, το Oreilly έχει ένα υπέροχο βιβλίο "Exploring Expect"
Βήμα 2: Μεταβλητές
Θα ξεκινήσουμε με τη ρύθμιση ορισμένων μεταβλητών. Θα θέλετε να ορίσετε τις μεταβλητές θύρας/ονόματος χρήστη/κωδικού πρόσβασης/δικτυακής οθόνης/προτροπής ώστε να ταιριάζουν με το περιβάλλον σας. #!/usr/bin/expect#Αναμένετε δημιουργία σεναρίου για δημιουργία αντιγράφων ασφαλείας των τειχών προστασίας δικτύου#Joe#Ορισμός ορισμένου χρονικού ορίου λήξης 60 ρυθμίσεων χρήστη "root" set password "password" set port "2022" set netscreen "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" Error: netscreen η δημιουργία αντιγράφων ασφαλείας απέτυχε [χρονική σήμανση -διαμόρφωση%Y-%m-%d] "set mailfail" "set prompt" foo->"
Βήμα 3: Σύνδεση
Στη συνέχεια στο σενάριο θα προσπαθήσουμε και connect.send_user "NetScren Backup Script / n" send_user "Σύνδεση με $ netscreen / n" spawn ssh $ user@$ netscreen -p $ port expect {"password:" {send "$ password / r "αναμένω {" $ prompt "{send_user" Connected "}" Η άδεια απορρίφθηκε "{send_user" Μη έγκυρος κωδικός πρόσβασης, έξοδος από "set mailfail" Μη έγκυρο κωδικό πρόσβασης, έξοδος από "close} timeout {send_user" No prompt επιστρέφεται "set mailfail" Δεν επιστρέφεται ερώτημα "close}}}" Δεν υπάρχει διαδρομή για φιλοξενία "{send_user" Δεν είναι δυνατή η σύνδεση με $ netscreen / n "set mailfail" Δεν είναι δυνατή η σύνδεση με $ netscreen / n "}" Όνομα ή υπηρεσία δεν είναι γνωστή "{send_user" Δεν είναι δυνατή η σύνδεση με $ netscreen / n "set mailfail" Δεν είναι δυνατή η σύνδεση με $ netscreen / n "} timeout {send_user" Timeout conncting to $ netscreen "set mailfail" Timeout conncting to $ netscreen "close}} if {$ mailfail! =" "} { exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}
Βήμα 4: Απενεργοποιήστε τη σελίδα
Πρέπει να απενεργοποιήσετε τη σελιδοποίηση - ή την πιο γρήγορη εισαγωγή στην οθόνη δικτύου. #Απενεργοποιήστε τη σελίδα της κονσόλας "more" promptsend "0 / r" αναμένουμε {"$ prompt" {send_user "\ nPages Disabled / n"} προεπιλογή {send "ScreenOS δεν εκτός από την επιλογή σελιδοποίησης. / N" set mailfail "ScreenOS έκανε εκτός από την επιλογή σελιδοποίησης. " close} timeout {send_user "Το ScreenOS δεν εξαιρούσε την επιλογή σελιδοποίησης / n" set mailfail "Το ScreenOS δεν εξαιρούσε την επιλογή σελιδοποίησης." κλείσιμο}} αν {$ mailfail! = ""} {exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}
Βήμα 5: Λήψη Config
Τώρα θα πάρουμε το config. send_user "Λήψη διαμόρφωσης / n" log_file $ basedir/$ logsend "get config / r" expect {"$ prompt" {log_file send_user "\ nΔιαμόρφωση λήφθηκε / n"} χρονικό όριο {send_user "\ nΣφάλμα κατά τη λήψη της διαμόρφωσης." set mailfail "Σφάλμα κατά τη λήψη της διαμόρφωσης." }} closeif {$ mailfail! = ""} {exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}
Βήμα 6: Ελέγξτε για να δείτε εάν το Config είναι το σωστό μέγεθος
Θα ξέρουμε να ελέγξουμε αν η διαμόρφωση είναι τουλάχιστον 1k.set αρχείο μεγέθους [μέγεθος αρχείου $ basedir/$ log] εάν {$ filesize <= 1024} {send_user "Η διαμόρφωση του Netscreen είναι πολύ μικρή, διερευνήστε / n" ορίστε αλληλογραφία " Η διαμόρφωση του Netscreen είναι πολύ μικρή, διερευνήστε / n "exec /bin /mail -s $ mailsubject $ mailto <<" $ mailfail "exit}
Βήμα 7: Καθαρισμός
Ας εκτελέσουμε μια μικρή εκκαθάριση για να καταργήσουμε διαμορφώσεις παλαιότερες των δύο εβδομάδων. #Αφαίρεση διαμόρφωσης παλαιότερης από 2 εβδομάδεςseecec εύρεση $ basedir -name '*config.txt*' -mtime +14
Βήμα 8: Όλοι μαζί
Βάλτε τα όλα μαζί τώρα. Επισυνάπτεται ως αρχείο κειμένου. Θα στείλει μηνύματα ηλεκτρονικού ταχυδρομείου για τυχόν αποτυχίες. #!/usr/bin/expect#Αναμένετε σενάριο για δημιουργία αντιγράφων ασφαλείας των ρυθμίσεων τείχους προστασίας δικτύου#Joe#Ορίστε κάποιο χρονικό όριο varsset 60set user "root" set password "password" set port "2022" set netscreen "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" Error: netscreen η δημιουργία αντιγράφων ασφαλείας απέτυχε [timestamp -format%Y-%m-%d] "set mailfail" "set prompt" foo-> "send_user" NetScren Backup Script / n "send_user" Connecting to $ netscreen / n "spawn ssh $ user@$ netscreen -p $ port expect {"password:" {send "$ password / r" expect {"$ prompt" {send_user "Connected"} "Άδεια απορρίφθηκε" {send_user "Μη έγκυρος κωδικός πρόσβασης, έξοδος από" set mailfail "Μη έγκυρος κωδικός πρόσβασης, έξοδος "close} χρονικό όριο {send_user" Καμία επιστροφή μηνύματος "set mailfail" No prompt επιστρέφτηκε "close}}}" No route to host "{send_user" Unable to connect to $ netscreen / n "set mailfail" Unable to connect to $ netscreen / n "}" Όνομα ή υπηρεσία άγνωστη "{send_user" Δεν είναι δυνατή η σύνδεση με $ netscreen / n "s et mailfail "Δεν είναι δυνατή η σύνδεση με $ netscreen / n"} timeout {send_user "Timeout conncting to $ netscreen" set mailfail "Timeout conncting to $ netscreen" close}} if {$ mailfail! = ""} {exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit}#Τώρα που τελείωσε, συνέχισε#Απενεργοποίησε τη σελίδα της κονσόλας σετ "more" promptsend "0 / r" expect {"$ prompt" {send_user "\ nPages Disabled / n "} προεπιλογή {αποστολή" Το ScreenOS δεν εξαιρούσε την επιλογή σελιδοποίησης. / n "set mailfail" Το ScreenOS δεν εξαιρούσε την επιλογή σελιδοποίησης. " close} timeout {send_user "Το ScreenOS δεν εξαιρούσε την επιλογή σελιδοποίησης / n" set mailfail "Το ScreenOS δεν εξαιρούσε την επιλογή σελιδοποίησης." close}} if {$ mailfail! = ""} {exec/bin/mail -s $ mailsubject $ mailto << "$ mailfail" exit} send_user "Λήψη διαμόρφωσης / n" log_file $ basedir/$ logsend "get config / r "αναμονή {" $ prompt "{log_file send_user" / nΚατεβάστηκε η διαμόρφωση / n "} timeout {send_user" / nΣφάλμα κατά τη λήψη της διαμόρφωσης. " set mailfail "Σφάλμα κατά τη λήψη της διαμόρφωσης." }} closeif {$ mailfail! = ""} {exec/bin/mail -s $ mailsubject $ mailto << "$ mailfail" exit} ορίστε το μέγεθος αρχείου [μέγεθος αρχείου $ basedir/$ log] εάν {$ filesize <= 1024} {send_user "Το Netscreen config είναι πολύ μικρό, διερευνήστε / n" set mailfail "Το Netscreen config είναι πολύ μικρό, διερευνήστε / n" exec /bin /mail -s $ mailsubject $ mailto << "$ mailfail" exit} #Remove config παλαιότερο των 2 εβδομάδωνsexec βρείτε $ basedir -name '*config.txt*' -mtime +14