"Choose wisely"
Debian Server
Scripting
API
Debian LVM
DevOps
Certificats
Raspberry
Electronique
Infos diverses
VMWare
Et ici c'est la sidebar, oui, j'oublie toujours le nom alors je le rajoute.
Debian Server
Scripting
API
Debian LVM
DevOps
Certificats
Raspberry
Electronique
Infos diverses
VMWare
Et ici c'est la sidebar, oui, j'oublie toujours le nom alors je le rajoute.
#!/usr/bin/expect -f # script de récupération de fichier # Creator : Youenn DUVAL # Mail : youenn.duval@barbed.fr # Date : 19/30/2019 # Description : # Script de récupération de fichier sur un serveur passé en argument(ip) ainsi que le pass # Exemple ./import.sh 66.66.66.66 motdepasse # Il crée un dossier import où il recupere les fichiers et un dossier export où il stock des archives en zip. # Conditions: il doit récuperer 3 fichiers par servers, existant et non vide. # Il récupere ses deux fichier plus le hostname. Les mets dans dossier Import/ipduserveur puis les compressent # dans une archivre zip correspondant au nom d'host de la machine (ex: domaine.zip) # en cas d'erreur il précise dans le nom de l'archive si il manque un fichier ou si il y a au moins un fichier vide # Amélioration possible, nettoyage du dossier import, débuggage dy systeme de logs # Déclaration des variables #----------------------------------------------------------------- set LOGIN "loginserver" set PASS [lindex $argv 1] set SERVER [lindex $argv 0] set WORK_DIR "/repertoire/de/travail" set IMPORT_DIR "$WORK_DIR/récup" set EXPORT_DIR "$WORK_DIR/Export" set FILE_DIR "/emplacement/des/fichier/a/recuperer" set FILE_1 "fichier1" set FILE_2 "ficher2" set LOG "log_script" set REPORT "log_report" # Création du répertoire de réception et d'export #----------------------------------------------------------------- exec mkdir -p $IMPORT_DIR/$SERVER exec mkdir -p $EXPORT_DIR # Purge Log #----------------------------------------------------------------- #exec echo "" > $WORK_DIR/$REPORT # Récupération du fichier hostname #----------------------------------------------------------------- spawn scp -r -p -o StrictHostKeyChecking=no $LOGIN@$SERVER:/etc/hostname $IMPORT_DIR/$SERVER expect { "*password:*" { send $PASS\r\n; interact } eof { exit } } # Création de la variable hostname set f [open "$IMPORT_DIR/$SERVER/hostname"] set HOSTS [read $f] close $f set HOSTNAME [lindex [split $HOSTS \n] 0] # Récupération du premier fichier #----------------------------------------------------------------- spawn scp -r -p -o StrictHostKeyChecking=no $LOGIN@$SERVER:$FILE_DIR/$FILE_1 $IMPORT_DIR/$SERVER expect { "*password:*" { send $PASS\r\n; interact } eof { exit } } # Recupération du second fichier #----------------------------------------------------------------- spawn scp -r -p -o StrictHostKeyChecking=no $LOGIN@$SERVER:$FILE_DIR/$FILE_2 $IMPORT_DIR/$SERVER expect { "*password:*" { send $PASS\r\n; interact } eof { exit } } # Les fichiers existe t il ? #----------------------------------------------------------------- set NUM_FILE 0 foreach f [glob $IMPORT_DIR/$SERVER/*] { set NUM_FILE [expr {$NUM_FILE + 1}] } # puts "Il y a $NUM_FILE fichiers dans le repertoire $SERVER" if { $NUM_FILE < 3 } { # puts "Il manque un fichier" exec echo "Manque fichier serveur $SERVER" >> $WORK_DIR/$REPORT set HOSTNAME "$HOSTNAME-Error_num_File" } # Les fichiers sont ils egale à zero ? #----------------------------------------------------------------- set CONTROL 1 foreach f [glob $IMPORT_DIR/$SERVER/*] { set FILE_SIZE [file size $f] if {[file size $f] == 0} { puts "fichier à zero" exec echo "Le fichier $f a une taille égale a 0" >> $WORK_DIR/$REPORT set HOSTNAME "$HOSTNAME-Error_empty_file" } } # Compréssion du fichier exec zip -rj $EXPORT_DIR/$HOSTNAME $IMPORT_DIR/$SERVER puts "End" puts ""