« LINUX:Glusterfs - Clients » : différence entre les versions

Aucun résumé des modifications
Aucun résumé des modifications
Ligne 205 : Ligne 205 :
  fichier:close()
  fichier:close()
----
----
====Script en Bash====
Le script Bash suivant va utiliser le script Lua décrit ci-dessus. On le nomme "checkgluster.boucle.bat". Il est placé dans le répertoire "/manager/glusterfs".
Voici son contenu:
----
#!/usr/bin/bash
CHEMIN="/manager/glusterfs"
cd $CHEMIN
# on peut choisir de traiter les entrées du fichier /etc/fstab ou son propre fichier fstab
# cas type "glusterfs" dans //manager/glusterfs/fstab
FICHIER="$CHEMIN/fstab"
# cas du type "glusterfs" dans /etc/fstab
#FICHIER="/etc/fstab"
# bouclage infini !!!!
<span style="color:red">for (( ; ; ))
do</span>
# affichage de la date
  DT=`/usr/bin/date`
  echo $DT  > $CHEMIN/mnt.log
# récupération des serveurs actifs du cluster
  /usr/bin/lua gluster.lua
  TAILLE=`/usr/bin/wc -c gluster.txt | /usr/bin/awk '{printf("%s",$1)}' `
# démontage du volume si le serveur distante est inactive
  while IFS= read -r glm
  do
  IFS=$' :\t' read -r -a arr <<< "$glm"
  if [ "${arr[3]}" == "glusterfs" ]
  then
    MACHINEM=`/usr/bin/mount | grep "${arr[2]}" | /usr/bin/awk -F ":" '{printf("%s",$1)}' `
    if [ "$MACHINEM" != "" ]
    then
    MACHINE=`/usr/bin/grep $MACHINEM gluster.txt`
    if [ "$MACHINE" == "" ]
    then
      /usr/bin/umount ${arr[2]}
      echo "Démontage de ${arr[2]} - La machine ${arr[0]} est inactive" >> $CHEMIN/mnt.log
    fi
    fi
  fi
  done <<< "$(/usr/bin/sed '/^#/ d' < $FICHIER | /usr/bin/grep 'glusterfs')"
# traitement s'il y a des serveurs actifs dans le cluster
  if [ "$TAILLE" != "0" ]
  then
# démontage des volumes si la ligne commence par "##"
  while IFS= read -r glm
  do
    IFS=$' \t' read -r -a arr <<< "$glm"
    if [ "${arr[2]}" == "glusterfs" ]
    then
    if /usr/bin/mountpoint -q "${arr[1]}"
    then
      /usr/bin/umount ${arr[1]}
      echo "${arr[1]} démonté" >> $CHEMIN/mnt.log
    else
      echo "${arr[1]} est déjà démonté" >> $CHEMIN/mnt.log
    fi
    fi
  done <<< "$(/usr/bin/grep '^##' $FICHIER | grep 'glusterfs' | /usr/bin/sed 's/#//g')"
# montage des volumes non montés
  while IFS= read -r glm
  do
    IFS=$' :\t' read -r -a arr <<< "$glm"
    if [ "${arr[3]}" == "glusterfs" ]
    then
    if /usr/bin/mountpoint -q "${arr[2]}"
    then
      echo "${arr[2]} est déjà monté" >> $CHEMIN/mnt.log
    else
      MACHINE=`/usr/bin/grep ${arr[0]} gluster.txt`
      if [ "$MACHINE" == "" ]
      then
      MACHINE=`/usr/bin/head -n 1 gluster.txt`
      fi
      /usr/bin/mount -t "${arr[3]}" -o "${arr[4]}" "$MACHINE:${arr[1]}" "${arr[2]}"
      echo "${arr[2]} est monté sur la machine $MACHINE" >> $CHEMIN/mnt.log
    fi
    fi
  done <<< "$(/usr/bin/sed '/^#/ d' < $FICHIER | /usr/bin/grep 'glusterfs')"
# état des montages
  echo "=====================================================================" >> $CHEMIN/mnt.log
  /usr/bin/df -h >> $CHEMIN/mnt.log
  fi
# pause de 60 secondes avant le passage suivant
  <span style="color:red">sleep 60
done</span>
exit 0
----