Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Par joeSuivez plus par l'auteur:
À propos: J'aime bricoler avec à peu près n'importe quoi, parfois ça marche à la fin. Amusez-vous à regarder les projets, essayez de déchirer quelque chose et dites-moi comment ça se passe. bravo, -Joe En savoir plus sur Joe »
Cette instructable montre un script qui peut être utilisé pour automatiser les sauvegardes d'un pare-feu netscreen exécutant ScreenOS.
Étape 1: Exigences
Ce script est écrit en expect et suppose que SSH est activé sur votre netscreen et un environnement Linux. Si vous n'avez jamais consulté attendez, Oreilly a un excellent livre "Exploring Expect"
Étape 2: Variables
Nous allons commencer par définir certaines variables. Vous voudrez définir les variables port/nom d'utilisateur/mot de passe/netscreen/prompt pour qu'elles correspondent à votre environnement. #!/usr/bin/expect#Script attendu pour sauvegarder la configuration des pare-feux netscreen#Joe #Définir un délai d'attente 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 échec de la sauvegarde [timestamp -format %Y-%m-%d] " set mailfail " " set prompt " foo->"
Étape 3: Connectez-vous
Ensuite, dans le script, nous allons essayer de connecter.send_user "NetScren Backup Script\n"send_user "Connexion à $netscreen\n"spawn ssh $user@$netscreen -p$port expect { "password:" { send "$password\ r" expect { "$prompt" { send_user "Connected" } "Autorisation refusée" { send_user "Mot de passe invalide, sortie" set mailfail "Mot de passe invalide, sortie" close } timeout { send_user "Aucune invite renvoyée" set mailfail "Aucune invite renvoyée " close } } } "Pas de route vers l'hôte" { send_user "Impossible de se connecter à $netscreen\n" set mailfail "Impossible de se connecter à $netscreen\n" } "Nom ou service inconnu" { send_user "Impossible de se connecter à $netscreen\n" set mailfail "Impossible de se connecter à $netscreen\n" } timeout{ send_user "Timeout de connexion à $netscreen" set mailfail "Timeout de connexion à $netscreen" close } }if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Étape 4: Désactiver la pagination
Vous devez désactiver la pagination - ou le plus d'invite sur l'écran net. #Désactiver l'invite "plus" envoyer "définir la page de la console 0\r"expect { "$prompt" { send_user "\nPaging Disabled\n" } default { send "ScreenOS n'a pas excepté l'option de pagination.\n" set mailfail "ScreenOS n'a pas pas sauf l'option de pagination." close } timeout { send_user "ScreenOS n'a pas excepté l'option de pagination\n" set mailfail "ScreenOS n'a pas excepté l'option de pagination." close }}if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Étape 5: Obtenez la configuration
Nous allons maintenant récupérer la config. send_user "Téléchargement de la configuration\n"fichier_journal $basedir/$logsend "get config\r"expect { "$prompt" { log_file send_user "\nConfiguration téléchargée\n" } timeout { send_user "\nErreur lors du téléchargement de la configuration." set mailfail "Erreur lors du téléchargement de la configuration." }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Étape 6: Vérifiez si la configuration est de la bonne taille
Nous saurons vérifier si la configuration est d'au moins 1k. La configuration Netscreen est trop petite, veuillez vérifier\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}
Étape 7: nettoyage
Exécutons un petit nettoyage pour supprimer les configurations de plus de deux semaines. #Supprimer la configuration de plus de 2 semainesexec find $basedir -name '*config.txt*' -mtime +14
Étape 8: Tous ensemble
Assemblez le tout maintenant. Il est joint sous forme de fichier texte. Il enverra des e-mails en cas d'échec. #!/usr/bin/expect#Script attendu pour sauvegarder la configuration des pare-feux netscreen#Joe#Définir un délai d'attente 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 la sauvegarde a échoué [timestamp -format %Y-%m-%d] "set mailfail ""définir l'invite "foo-> "send_user "NetScren Backup Script\n"send_user "Connexion à $netscreen\n"spawn ssh $user@$ netscreen -p$port expect { "password:" { send "$password\r" expect { "$prompt" { send_user "Connected" } "Autorisation refusée" { send_user "Mot de passe invalide, en cours" set mailfail "Mot de passe invalide, en cours " close } timeout { send_user "Aucune invite renvoyée" set mailfail "Aucune invite renvoyée" close } } } "Aucune route vers l'hôte" { send_user "Impossible de se connecter à $netscreen\n" set mailfail "Impossible de se connecter à $netscreen\ n" } "Nom ou service inconnu" { send_user "Impossible de se connecter à $netscreen\n" s et mailfail "Impossible de se connecter à $netscreen\n" } timeout{ send_user "Timeout de connexion à $netscreen" set mailfail "Timeout de connexion à $netscreen" close } }if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Maintenant que c'est terminé, continuez#Désactivez les invites "more"send "set console page 0\r"expect { "$prompt" { send_user "\nPaging désactivé\ n" } default { send "ScreenOS n'a pas excepté l'option de pagination.\n" set mailfail "ScreenOS n'a pas excepté l'option de pagination." close } timeout { send_user "ScreenOS n'a pas excepté l'option de pagination\n" set mailfail "ScreenOS n'a pas excepté l'option de pagination." close }}if { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}send_user "Téléchargement de la configuration\n" log_file $basedir/$logsend "get config\r "expect { "$prompt" { log_file send_user "\nConfiguration téléchargée\n" } timeout { send_user "\nErreur lors du téléchargement de la configuration." set mailfail "Erreur lors du téléchargement de la configuration." }}closeif { $mailfail != "" } { exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}définir la taille du fichier [taille du fichier $basedir/$log]if { $filesize <= 1024 } { send_user "La configuration du réseau est trop petite, veuillez enquêter\n" set mailfail "La configuration du réseau est trop petite, veuillez enquêter\n" exec /bin/mail -s$mailsubject $mailto << "$mailfail" exit}#Remove config plus de 2 semainesexec find $basedir -name '*config.txt*' -mtime +14