#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