Bonjour,

Voila, j'ai fait un script qui va récupérer le dossier /etc/ de plusieurs équipements pour l'envoyer vers un serveur de sauvegarde de Conf.

Cependant, j'aimerais rajouter la récupération d'un nouveau dossier (/root/scripts) qui, comme son nom l'indique var récupérer le dossier des scripts (bah oui, c'est sympa d'avoir la conf d'un équipement quand celui la plante pour le refaire assez vite, mais si on ne prend pas les scripts qui sont très utile c'est embêtant )

Je n'ai pas réussi à trouver s'il était possible dans la même commande scp de copier 2 répertoires différents vers un destinataire.

Donc pour moi j'ai 2 possibilités que je ne trouve pas très propre :

1) Refaire un nouveau scp avec l'autre dossier (donc lancer à la suite 2 scp, ce qui est dommage car le 1er scp va se lancer, fermer la session pour en ré-ouvrir une 2eme)

2) Rajouter dans le 1er dossier, un lien symbolique vers mon 2ème dossier (ce que je ne trouve pas très propre mais au moins ça marche )

Voici mon script (qui sera amélioré plus tard).

En gros, je vérifie si un dossier avec la date du jour existe, si oui je le supprime et je le recréais, si non je le créais tout simplement.

Puis je vais lire un fichier csv, et pour chaque ligne, je vais lancer un scp pour récupérer le /etc.

Code : 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/$1/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/$1/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/$1/Save_$date/$nom
scp -r -B -C -o ConnectTimeout=75 root@$ip:/etc/* /data/Conf_eqpt/$1/Save_$date/$nom/
done
 
 
## Verifie si la sauvegarde c'est bien passée ##
nb_ligne=$(cat /root/Save_eqpt/noms.csv | wc -l)
nb_dossier=$(ls /data/Conf_eqpt/$1/Save_$date | wc -l)
if [ $nb_ligne != $nb_dossier ]; then
echo "La sauvegarde ne s'est pas bien passee." | mail -a "From: <a href="mailto:no-reply@tutu.com">no-reply@tutu.com</a>" -s "Erreur de la sauvegarde des equipements" <a href="mailto:alertes@tutu.com">alertes@tutu.com</a>
fi
echo FIN
exit 0

Si quelqu'un a une petite idée, je suis preneur avec volontiers

Merci, et soyez indulgent, j'ai choisi le réseau car le développement était fâché avec moi, alors de temps en temps j'essaye de faire un peu de shell pour me réconcilier, mais il est repousse mes avances