#1 Le 14/05/2008, à 14:46
- stillcut
[RESOLU] SSH et PWD (print working directory)
Bonjour à tous et déjà merci de me lire.
Alors , dans une architecture client/serveur , je cherche à écrire un script qui doit (entre autres) permettre de restaurer par l'utilisation des snapshots (LVM) le répertoire ou se trouve l'utilisateur quand il lance le script.
Exemple :
Sur le serveur même, je me rend dans /home/user/images et lance le script en local ,
j'obtiens une proposition de restauration pour le dossier /home/user/images.
Parfait.
cd /home/user/images
/usr/local/bin/restaurationVoulez -vous restaurez le dossier /home/user/images de 15H ?
Sur ma machine , je lance le script via SSH depuis /home/user/images (montage).
J'obtiens une proposition de restauration pour le dossier /home/user.
Raté !
SSH remonte directement à la racine dans mon homedir et y execute ma commande pwd , d'ou le plantage.
cd /home/user/images
ssh nom_du_serveur /usr/local/bin/restauration
Voulez -vous restaurez le dossier /home/user/ de 15H ?
Toute aide sera la bienvenue.
Ci-dessous , ce merveilleux code à l'indentation toute particuière.
#!/bin/bash
rep=$(pwd)
echo "$rep"
represtau=`echo $rep | sed -e "s/\/home//"`
heure=$(date '+%H')
echo ""
echo -n "Souhaitez vous restaurer le dossier $rep de $heure H (y/n)"
echo ""
read reponse
echo ""
if [ "$reponse" = "y" ]; then
echo "RESTAURATION REPERTOIRE EN COURS"
echo "Création du point de montage"
sudo -s /bin/mkdir /mnt/snaps/home.$heure\h00
echo "Montage du snapshot"
/bin/mount /dev/VG0/home.$heure\h00 /mnt/snaps/home.$heure\h00
echo "Copie depuis $rep vers homedir"
cp -a /mnt/snaps/home.$heure\h00$represtau /$rep.snap
echo "Démontage du snapshot"
/bin/umount /dev/VG0/home.$heure\h00 /mnt/snaps/home.$heurerestau\h00
echo "Suppression du point de montage"
rm -rf /mnt/snaps/home.$heurerestau\h00
echo "RESTAURATION TERMINEE"
elif [ "$reponse" = "n" ]; then
echo -n "Souhaitez vous restaurer un document ou un dossier (document/dossier)"
echo ""
read reponse2
echo ""
if [ "$reponse2" = "document" ]; then
echo "Veuillez entrer le chemin vers le document-cible"
echo "Exemple /nom/Documents/important/documentarestaurer"
read doccible
echo "Veuillez indiquer l'heure de la restauration à effectuer(08-19)"
read docheure
echo "Etes-vous sur de vouloir restaurer le document $doccible de $docheure H ? (y/n)"
read reponsedoc
if [ "$reponsedoc" = "y" ]; then
echo "RESTAURATION DOC EN COURS"
echo "Création du point de montage"
sudo -s /bin/mkdir /mnt/snaps/home.$docheure
echo "Montage du snapshot"
/bin/mount /dev/VG0/home.$docheure /mnt/snaps/home.$docheure
echo "Copie depuis /mnt vers homedir"
cp -a /mnt/snaps/home.$docheure\h00$doccible /home$doccible.snap
echo "Démontage du snapshot"
/bin/umount /dev/VG0/home.$docheure /mnt/snaps/home.$docheure
echo "Destruction du point de montage"
rm -rf /mnt/snaps/home.$docheure
echo "RESTAURATION TERMINEE"
elif [ "$reponsedoc" = "n" ]; then
echo "A votre demande, le script de restauration va se terminer"
else
echo "Erreur, veuillez relancer le script de restauration"
fi
exit
elif [ "$reponse2" = "dossier" ]; then
echo "Veuillez entrez le chemin vers le répertoire cible"
echo "Exemple /user/dossier/arestaurer"
read repcible
echo "Veuillez indiquer l'heure de la restauration à effectuer(08-19)"
read repheure
echo "Etes-vous sur de vouloir restaurer le repertoire /home$repcible de $repheure H ? (y/n)"
read reponserep
if [ "$reponserep" = "y" ]; then
echo "RESTAURATION REPERTOIRE EN COURS"
echo "Création du point de montage"
sudo -s /bin/mkdir /mnt/snaps/home.$repheure
echo "Montage du snapshot"
/bin/mount /dev/VG0/home.$repheure /mnt/snaps/home.$repheure
echo "Copie depuis /mnt vers homedir"
cp -a /mnt/snaps/home.$repheure\h00$repcible /home$repcible.snap
echo "Démontage du snapshot"
/bin/umount /dev/VG0/home.$repheure /mnt/snaps/home.$repheure
echo "Destruction du point de montage"
rm -rf /mnt/snaps/home.$repheure
echo "RESTAURATION TERMINEE"
elif [ "$reponserep" = "n" ]; then
echo "A votre demande, le script de restauration va se terminer"
else
echo "Erreur, veuillez relancer le script de restauration"
fi
exit
fi
else
echo "Erreur, veuillez relancer le script de restauration"
fi
exit
Dernière modification par stillcut (Le 14/05/2008, à 15:45)
Hors ligne
#2 Le 14/05/2008, à 15:19
- wblitz
Re : [RESOLU] SSH et PWD (print working directory)
je te propose une petite modification de ton script :
#!/bin/bash
if [ $# -ne 1 ]; then
echo "Erreur, veuillez spécifier le répertoire à restaurer"
fi
# mémorisation du répertoire courant
cur_rep=`pwd`
rep=$1
# on se place dans le répertoire à restaurer
cd $rep
# la suite est identique
# tout à la fin avant le exit
cd $cur_rep
que tu appelleras donc comme suit en local :
/usr/local/bin/restauration /chemin/absolu_ou_relatif/mon_repertoire
et à distance :
ssh user@serveur /usr/local/bin/restauration /chemin/absolu_ou_relatif/mon_repertoire
sachant qu'un chemin relatif sera toujours pris (en ssh) par rapport au home de l'utilisateur user
"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs
Hors ligne
#3 Le 14/05/2008, à 15:37
- stillcut
Re : [RESOLU] SSH et PWD (print working directory)
Eh c'est pas bete ca !
Remarque j'en attendais pas moins d'un Rennais.
L'avantage c'est que ca me permet de bénéficier de la complétion.
Solution adoptée.
Merci à toi.
35000 RULES !
Dernière modification par stillcut (Le 14/05/2008, à 15:37)
Hors ligne
#4 Le 14/05/2008, à 15:38
- wblitz
Re : [RESOLU] SSH et PWD (print working directory)
mais de rien ami breton
un petit résolu si tu as le temps =p
Dernière modification par wblitz (Le 14/05/2008, à 15:40)
"Un optimiste, c'est un homme qui plante deux glands et qui s'achète un hamac" - Jean de Lattre de Tassigny
Pensez à mettre [RÉSOLU] dans le sujet de vos posts une fois qu'ils le sont...
quelques docs
Hors ligne
#5 Le 14/05/2008, à 15:45
- stillcut
Re : [RESOLU] SSH et PWD (print working directory)
Of course sir !
Hors ligne