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 18/11/2013, à 19:40

The_JacK

Aide sur script (je suis debutant)

Bonjour,

Je possede un NAS Synology et ai fait l'acquisition il y a peu de deux serveur ProLiant. Ces deux serveurs sont configurés avec HA/DRBD.
Vous l'aurez compris, le but étant d'accroitre la capacité de stockage de mon NAS DS412+.

Voici ma configuration :
NAS Syno DS412+ 8To
Serveurs ProLiant avec 3 HDD de 160Gb en raid 5 pour l'OS et 4HDD de 4To en raid 5 pour les data.

J'ai créé un script, qui, a chaque démarrage/redémarrage du NAS s' execute et qui a pour fonction de faire des montages NFS du cluster (serveurs ProLiant) sur le NAS Synology.

Voici le script (/usr/syno/etc/rc.d) :

#!/bin/sh

case "$1" in

start)
# Demarrage des noeuds du cluster 1

	/opt/bin/wakelan 00:1c:c4:39:44:0e
	 sleep 5
	/opt/bin/wakelan 00:1c:c4:ae:1e:f3

	 sleep 180

	ash /volume1/Scripts/Diskstation/mount.sh
	;;

stop)

	ash /volume1/Scripts/Diskstation/umount.sh

	ssh root@192.168.1.203 "shutdown -h now"
	
	sleep 15
	
	ssh root@192.168.1.206 "shutdown -h now"
	;;

*)
	echo "usage: $0 { start | stop}" >&2
	exit 1
	;;
                        
esac

Voici le script mount.sh appelé dans la section start :

#!/bin/sh

	ssh root@192.168.1.101 "
	   ls /data/video/films > /tmp/films.txt |
	   ls /data/video/films3d > /tmp/films3d.txt |
	   ls /data/video/animations > /tmp/animations.txt |
	   ls /data/video/concerts > /tmp/concerts.txt |
	   ls /data/video/waltdisney > /tmp/waltdisney.txt |
	   ls /data/video/waltdisney3d > /tmp/waltdisney3d.txt"

	   scp root@192.168.1.101:/tmp/*.txt /opt/tmp/
	   ssh root@192.168.1.101 "rm /tmp/*.txt"
        
	while read line
        do
                    
	 test -d /volume1/video/Films/$line
                         
        if [ $? -eq 0 ] ; then
         echo "le fichier existe"	
	 else
	 mkdir /volume1/video/Films/$line
        fi
                               
         mount -t nfs 192.168.1.101:/data/video/films/$line /volume1/video/Films/$line
                                  
        done < /opt/tmp/films.txt
	
	while read line
        do
                     
	 test -d /volume1/video/Films\ 3D/$line
                         
        if [ $? -eq 0 ] ; then
         echo "le fichier existe"
	 else
         mkdir /volume1/video/Films\ 3D/$line
        fi
                               
         mount -t nfs 192.168.1.101:/data/video/films3d/$line /volume1/video/Films\ 3D/$line
                                  
        done < /opt/tmp/films3d.txt
	
	while read line
        do

	 test -d /volume1/video/Animations/$line

        if [ $? -eq 0 ] ; then
         echo "le fichier existe"
	else
	 mkdir /volume1/video/Animations/$line
        fi
                               
        mount -t nfs 192.168.1.101:/data/video/animations/$line /volume1/video/Animations/$line
                                  
        done < /opt/tmp/animations.txt

	while read line
        do

	 test -d /volume1/video/Concerts/$line

        if [ $? -eq 0 ] ; then
	 echo "le fichier existe"
	else
         mkdir /volume1/video/Concerts/$line
        fi
                               
        mount -t nfs 192.168.1.101:/data/video/concerts/$line /volume1/video/Concerts/$line
                                  
        done < /opt/tmp/concerts.txt

	while read line
        do

	 test -d /volume1/video/Walt\ Disney/$line

        if [ $? -eq 1 ] ; then
	 echo "le fichier existe"
	else
         mkdir /volume1/video/Walt\ Disney/$line
        fi

        mount -t nfs 192.168.1.101:/data/video/waltdisney/$line /volume1/video/Walt\ Disney/$line
        
	done < /opt/tmp/waltdisney.txt
	
	while read line
        do
	
	test -d /volume1/video/Walt\ Disney\ 3D/$line

        if [ $? -eq 1 ] ; then
         echo "le fichier existe"
	else
	 mkdir /volume1/video/Walt\ Disney\ 3D/$line
        fi
                               
        mount -t nfs 192.168.1.101:/data/video/waltdisney3d/$line /volume1/video/Walt\ Disney\ 3D/$line
                                  
        done < /opt/tmp/waltdisney3d.txt

et enfin le script umount.sh appelé dans la section stop :

#!/bin/sh

	while read line
        do
                    
	 test -d /volume1/video/Films/$line
                         
        if [ $? -eq 0 ] ; then
         umount -f /volume1/video/Films/$line && rm -R /volume1/video/Films/$line
	fi
                                  
        done < /opt/tmp/films.txt
	
	while read line
        do
                     
	 test -d /volume1/video/Films\ 3D/$line
                         
        if [ $? -eq 0 ] ; then
         umount -f /volume1/video/Films\ 3D/$line && rm -R /volume1/video/Films\ 3D/$line
	fi
                               
        done < /opt/tmp/films3d.txt
	
	while read line
        do

	 test -d /volume1/video/Animations/$line

	if [ $? -eq 0 ] ; then
         umount -f /volume1/video/Animations/$line && rm -R /volume1/video/Animations/$line
	fi
                               
        done < /opt/tmp/animations.txt

	while read line
        do

         test -d /volume1/video/Concerts/$line
	
	if [ $? -eq 0 ] ; then
         umount -f /volume1/video/Concerts/$line && rm -R /volume1/video/Concerts/$line
	fi
                                  
        done < /opt/tmp/concerts.txt

	while read line
        do
	
 	 test -d /volume1/video/Walt\ Disney/$line
        
	if [ $? -eq 0 ] ; then
         umount -f /volume1/video/Walt\ Disney/$line && rm -R /volume1/video/Walt\ Disney/$line
	fi

	done < /opt/tmp/waltdisney.txt

	while read line
        do
	
	 test -d /volume1/video/Walt\ Disney\ 3D/$line
        
	if [ $? -eq 0 ] ; then
         umount -f /volume1/video/Walt\ Disney\ 3D/$line && rm -R /volume1/video/Walt\ Disney\ 3D/$line
	fi
                               
	done < /opt/tmp/waltdisney3d.txt

J'ai deux interrogations sur ce script... En fait une interrogation et un problème...

Ma question : Est-il possible d'alleger ce script?
Mon Pb : Lorsque je crée un repertoire avec des espaces dans le cluster, lors du montage NFS, cela plante car lors de la lecture des fichiers *.txt les espaces ne sont pas gerés.

Merci pour vos conseils avérés.

Cdt,
The JacK

Hors ligne

#2 Le 18/11/2013, à 19:48

pingouinux

Re : Aide sur script (je suis debutant)

Bonjour,
J'ai regardé en vitesse. Il ne faut pas oublier les " ". Par exemple :

	while read line
        do
	 test -d /volume1/video/Walt\ Disney\ 3D/"$line"
# ou bien test -d "/volume1/video/Walt Disney 3D/$line"

Hors ligne

#3 Le 18/11/2013, à 19:54

The_JacK

Re : Aide sur script (je suis debutant)

oui effectivement, je n'ai pas retrouver cette erreur dans mon post mais, j'ai testé avec les deux et le pb reste le même, ca bloque toujours sur la ligne contenant des espaces dans le *.txt.

en tout cas merci d'avoir pris la peine de repondre.

Cdt,
The JacK

Dernière modification par The_JacK (Le 18/11/2013, à 19:54)

Hors ligne

#4 Le 18/11/2013, à 20:22

pingouinux

Re : Aide sur script (je suis debutant)

je n'ai pas retrouver cette erreur dans mon post

Elle apparaît de nombreuses fois dans tes scripts mount.sh et umount.sh. Tu peux chercher avec cette commande :

grep -w line mount.sh umount.sh

Dernière modification par pingouinux (Le 18/11/2013, à 20:22)

Hors ligne

#5 Le 18/11/2013, à 20:32

The_JacK

Re : Aide sur script (je suis debutant)

merci, tu m'a mis sur une piste que je suis en train de creuser, ca a l'air concluant.

Cdt,
The JacK

Hors ligne