Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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/restauration

Voulez -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 wink
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