Bonjour à tous, j'ai fait un petit script qui me permet de me connecter sur d'autres serveurs pour récupérer le /etc/* , ce qui permet de sauvegarder la configuration des équipements
Le script va lire un fichier csv ligne par ligne, et pour chaque ligne va se connecter sur l'équipement en ssh via un échange de clé. Cela fonctionne bien que je le lance à la main ou en crontab.
J'ai rajouté une petite vérification que la sauvegarde s'est bien lancée, la vérification est simple :
- Je compte le nombre de lignes dans mon fichier CSV et je met le résultat dans une variable,
- Je compte le nombre de dossiers où sont sauvegardés les sauvegardes et je mets le résultat dans une variable,
- Je compare les 2 variables et si le résultat n'est pas le même alors j'envoie un email.
Quand je lance le script à la main la vérification fonctionne bien, quand le résultat et le même je ne reçois pas de mail et quand il est différent (car j'ai supprimé un répertoire pour tester) je reçois bien un mail.
Cependant cette vérification ne fonctionne pas quand le script est lancé par la crontab, je reçois un mail alors que si je vérifie à la main le nombre de dossier il est bien égal aux nombres de ligne de mon fichier CSV.
Je suis pas très bon en script, mais si vous avez une petite idée du pourquoi je suis preneur.
Voici mon script, peut-être qu'il pourra servir à d'autres personnes. Peut-être que vous allez avoir quelques conseils pour mon script, je suis preneur, ça doit être le 3eme script que je fais en l'espace de 5ans ... alors je suis très rouillé
Merci de votre aide les gens ::
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #!/bin/bash -x ## Vérification si le dossier existe ## date=$(date '+%Y-%m-%d') dir="/data/Conf_eqpt/Save_$date" if [ -d "$dir" ]; then echo "le dossier existe !" rm -rf $dir fi ## Création du dossier et sauvegarde des confs ## mkdir /data/Conf_eqpt/Save_$date cat /root/Save_eqpt/noms.csv |sed "s/ /_/g" |while IFS=";" read nom ip do echo $nom sleep 3; mkdir /data/Conf_eqpt/Save_$date/$nom scp -r -B -C -o ConnectTimeout=75 root@$ip:/etc/* /data/Conf_eqpt/Save_$date/$nom/ done ## Verifie si la sauvegarde c'est bien passée ## nb_ligne=$(more /root/Save_eqpt/noms.csv | wc -l) nb_dossier=$(ls /data/Conf_eqpt/Save_$date | wc -l) if [ $nb_ligne != $nb_dossier ]; then echo "La sauvegarde ne s'est pas bien passee." | mail -s "Erreur de la sauvegarde des equipements" <a href="mailto:toto.tutu@totoland.com">toto.tutu@totoland.com</a> fi echo FIN exit 0
Partager