164 lines
5.8 KiB
Bash
Executable File
164 lines
5.8 KiB
Bash
Executable File
#!/bin/bash
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
# Script : expl_transfert_files.sh
|
|
# Auteur : Doug Le Tough
|
|
# Date : 22-07-2017
|
|
# Version : 1.0.0
|
|
# Objet : Permet le transfert de répertoires entre VM
|
|
#
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
# Mise a jour :
|
|
#
|
|
# 1.0.0 22/07/2017 - Doug Le Tough - Cre : Mise en production
|
|
#
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
# Dependances : Aucune
|
|
#
|
|
#
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
# Liste des options et arguments:
|
|
#
|
|
# @OPT: o:src_host:src_host:1/1::::
|
|
# @OPT: o:dst_host:dst_host:1/1::::
|
|
# @OPT: o:src_dir:src_dir:1/1::::
|
|
# @OPT: o:dst_dir:dst_dir:1/1::::
|
|
# @OPT: f:recursive:recursive:1/1:false:::
|
|
# @OPT: f:create:create:1/1:false:::
|
|
#
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
# Liste des erreurs:
|
|
#
|
|
# 2 | erreur | stop | ${ERROR}
|
|
#
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
##
|
|
## Syntaxe :
|
|
## --------
|
|
##
|
|
## prompt> expl_transfert_files.sh -src_host <VM1> -dst_host <VM2> -src_dir <DIR1> -dst_dir <DIR2>
|
|
##
|
|
## ex: expl_transfert_files.sh -src_host marian -dst_host jimmy -src_dir /etc/httpd -dst_dir /home/doug [-recursive true] [-create true]
|
|
##
|
|
## Prérequis:
|
|
## ----------
|
|
## - Le script doit être executé par l'utilisateur asr sur sousetsuken
|
|
##
|
|
## Fonctionnement:
|
|
## ---------------
|
|
## Récupère sur sousetsuken depuis src_host le contenu du répertoire src_dir et le copie dans le répertoire dst_dir
|
|
## sur dst_host
|
|
##
|
|
## Si l'option facultative -recursive est positionnée à true, la récupération sera récursive.
|
|
## Par défaut cette option vaut false.
|
|
##
|
|
## Si l'option facultative -create est positionnée à true, le répertoire de destination sera créé.
|
|
## Par défaut cette option vaut false.
|
|
##
|
|
## Si le répertoire de destination n'existe pas et l'option -create ne vaut pas true, le script remontera une erreur.
|
|
##
|
|
##
|
|
##-----------------------------------------------------------------------------------------------------------------
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
# Initialisation de l'environement
|
|
#------------------------------------------------------------------------------------------------------------------
|
|
|
|
if [ "${USER}" != "asr" ]; then
|
|
ERROR="Seul l'utilisateur asr peut utiliser ce script"
|
|
echo -e "\033[91m${ERROR}\033[0m"
|
|
exit 1
|
|
fi
|
|
|
|
source /etc/profile.d/tetalab.sh
|
|
|
|
if [ ! -f ${NC_EXPL_CFG}/init.conf ]; then
|
|
echo "Le fichier d'initialisation du socle \${NC_EXPL_CFG}/init.conf n'éxiste pas !"
|
|
echo "Arrêt du script par sécurité"
|
|
exit 250
|
|
fi
|
|
|
|
source ${NC_EXPL_CFG}/init.conf
|
|
|
|
|
|
|
|
##################################################################################
|
|
#
|
|
# Main
|
|
#
|
|
##################################################################################
|
|
|
|
# controle de l'utilisateur
|
|
if [ ! ${USER} == "asr" ]; then
|
|
rouge "Seul l'utilisateur asr peut utiliser ce script"
|
|
exit 1
|
|
fi
|
|
|
|
# Controle du nombre d'arguments
|
|
if [ ! $# -eq 2 ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# Controle de la validité des arguments
|
|
if [ ! $(expr index $1 ':/') -gt 0 ] || [ ! $(expr index $2 ':/') -gt 0 ]; then
|
|
rouge "Erreur dans les arguments."
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
SOURCE_HOST=$(echo $1 | cut -d: -f1)
|
|
DEST_HOST=$(echo $2 | cut -d: -f1)
|
|
SOURCE_PATH=$(echo $1 | cut -d: -f2)
|
|
DEST_PATH=$(echo $2 | cut -d: -f2)
|
|
|
|
# Génère une chaine aléatoire
|
|
RND=$(dd if=/dev/urandom bs=3 count=40 2>/dev/null | md5sum | cut -d' ' -f1)
|
|
|
|
# Le nom de l'archive contenant les documents à récupérer
|
|
ARCHIVE_NAME=${RND}.tgz
|
|
|
|
jaune "Récupération sur ${SOURCE_HOST} de ${SOURCE_PATH} et copie vers ${DEST_HOST} vers ${DEST_PATH}:"
|
|
|
|
jaune "Création de l'archive distante ${TETALABTMP}/${ARCHIVE_NAME}"
|
|
ssh ${SOURCE_HOST} "sudo tar -cvzf ${TETALABTMP}/${ARCHIVE_NAME} ${SOURCE_PATH}"
|
|
if [ ! $? -eq 0 ]; then
|
|
rouge "Erreur lors de la création de l'archive ${SOURCE_HOST}:${TETALABTMP}/${ARCHIVE_NAME} à partir de ${SOURCE_PATH}"
|
|
delete_archive
|
|
exit 1
|
|
fi
|
|
|
|
jaune "Modification des droits et permissions sur l'archive ${SOURCE_HOST}:${TETALABTMP}/${ARCHIVE_NAME}:"
|
|
ssh ${SOURCE_HOST} "sudo chown -v asr: ${TETALABTMP}/${ARCHIVE_NAME}"
|
|
if [ ! $? -eq 0 ]; then
|
|
rouge "Erreur lors de la modification des droits et permissions sur l'archive $SOURCE_HOST}:${TETALABTMP}/${ARCHIVE_NAME}"
|
|
delete_archive
|
|
exit 1
|
|
fi
|
|
|
|
jaune "Rappatriement de l'archive distante ${SOURCE_HOST}:${TETALABTMP}/${ARCHIVE_NAME} sur $(hostname)"
|
|
scp ${SOURCE_HOST}:${TETALABTMP}/${ARCHIVE_NAME} ${TETALABTMP}/${ARCHIVE_NAME}
|
|
if [ ! $? -eq 0 ]; then
|
|
rouge "Erreur lors du rappatriement de l'archive ${SOURCE_HOST}:${TETALABTMP}/${ARCHIVE_NAME} dans $(hostname):${TETALABTMP}/${ARCHIVE_NAME}"
|
|
delete_archive
|
|
exit 1
|
|
fi
|
|
|
|
jaune "Copie de l'archive locale ${TETALABTMP}/${ARCHIVE_NAME} vers ${DEST_HOST}:${TETALABTMP}/${ARCHIVE_NAME}"
|
|
scp ${TETALABTMP}/${ARCHIVE_NAME} ${DEST_HOST}:${TETALABTMP}/${ARCHIVE_NAME}
|
|
if [ ! $? -eq 0 ]; then
|
|
rouge "Erreur lors de la copie de l'archive locale ${TETALABTMP}/${ARCHIVE_NAME} vers ${DEST_HOST}:${TETALABTMP}/${ARCHIVE_NAME}"
|
|
delete_archive
|
|
exit 1
|
|
fi
|
|
|
|
jaune "Extraction du contenu de l'archive ${DEST_HOST}:${TETALABTMP}/${ARCHIVE_NAME} dans ${DEST_HOST}:${DEST_PATH}"
|
|
ssh ${DEST_HOST} "sudo tar -C ${DEST_PATH} -xvzf ${TETALABTMP}/${ARCHIVE_NAME}"
|
|
if [ ! $? -eq 0 ]; then
|
|
rouge "Erreur lors de la copie de la décompression de l'archive ${DEST_HOST}:${TETALABTMP}/${ARCHIVE_NAME}"
|
|
delete_archive
|
|
exit 1
|
|
fi
|
|
|
|
delete_archive
|
|
vert "Ok"
|
|
exit 0
|