Script de sauvegarde switch brocad

Résolu
Bonjour,

J'utilise un script de sauvegarde pour rapatrier la conf de mes switch , n'étant pas un dieu du script , je rencontre un problème lorsqu'un switch n'est pas joignable ce dernier s'emballe et stop toute action , je pense qu'il me manque une condition permettant de passer a la ligne suivante cependant je ne sais pas comment la formuler ???
Détail de fonctionnement , ce script utilise un fichier texte dans lequel est répertorié le nom des switch , le script est fait de telle sorte qu'il exécute une sauvegarde a chaque ligne du fichier txt ( $line) , a chaque sauvegarde ce dernier créer un répertoire incrémenté par une date dans lequel il dépose les fichiers de conf

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut,

    Le plus simple serait d'afficher ton script afin qu'on y jette un oeil, non ?

    1. mkdir -p $BROCADE_CONF/home/brocade/Conf'date +%Y%m%d'
      chown brocade $BROCADE_CONF/home/brocade//Conf'date +%Y%m%d'

      cat $SWLIST | while read LINE
      do
      Log "SAUVEGARDE DE $LINE"
      $BROCADE_SCRIPT |telnet $LINE
      sleep $INTERVAL
      keeplooping=1;
      while [[ $keeplooping -eq 1 ]] ; do
      if [ -f /home/brocade/testbkp/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf ] ; then
      break;
      fi
      done
      mv /home/brocade/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf /home/brocade/Conf'date +%Y%m%d'/$LINE.conf
      sleep $INTERVAL
      done
      1. Contributeur
        Il est complet ton script là ?

        C'est normal le double slash dans ton chemin "
        chown brocade $BROCADE_CONF/home/brocade//Conf'date +%Y%m%d' " ?

        Tu devrais rajouter un test (ping ?) juste avant de lancer le traitement via "telnet"...

        Et en fonction de ce test faire ton traitement sur le switch ou passer au suivant.
    2. oui j ai juste supprimer klk lignes sinon l'affichage n'est pas correcte sur ce site
      1. je pensais a klk du genre cependant je n'ai aucune idée sur la syntaxe ...
        1. Contributeur
          Un truc du genre devrait le faire (à inclure dans ta boucle "while" avant le "telnet") :

          ping -c1 $LINE >/dev/null
          
          if [ "$?" -gt 0 ]
          then continue
          fi
      2. je penses que cela ne résoudra pas complètement mon problème , car lorsque le script s emballe , je teste immédiatement la machine qui s'avère joignable , donc je pense qu'il me faudrait un moyen pour faire plusieur tentative en cas d'échec , mais également le moyen de pouvoir passer au switch suivant
        1. cat $SWLIST | while read LINE
          do
          Log "SAUVEGARDE DE $LINE"
          ping -c1 $LINE >/dev/null

          if [ "$?" -gt 0 ]
          then continue
          fi
          $BROCADE_SCRIPT |telnet $LINE
          sleep $INTERVAL
          keeplooping=1;
          while [[ $keeplooping -eq 1 ]] ; do
          if [ -f /home/brocade/testbkp/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf ] ; then
          break;
          fi
          done
          mv /home/brocade/testbkp/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf /home/brocade/testbkp/Conf'date +%Y%m%d'/$LINE.conf
          sleep $INTERVAL
          done

          je penses que je dois oublier quelque chose j ai toujours cette erreur qui tourne en boucle

          ++ date +%Y%m%d
          + '[' -f /home/brocade/testbkp/Conf20110810/renamebeforestor.20110810.conf ']'
          + [[ 1 -eq 1 ]]
          ++ date +%Y%m%d
          1. Contributeur
            Quelle erreur ?

            A quoi sert cette boucle exactement ? Où est initialisée la variable "$keeplooping" ?
        2. Il s'agit d un script que j ai repris , je viens de le modifier le problème est donc reglé , mais maintenant losqu'il arrive a la derniere ligne du fichier txt contenant les ip des switch , le script tourne en boucle et recommence a partir de la première

          do
          Log "SAUVEGARDE DE $LINE"
          #ping -c1 $LINE >/dev/null

          #if [ "$?" -gt 0 ]
          #then continue
          #fi
          $BROCADE_SCRIPT |telnet $LINE
          echo "Script resultat : $?"
          sleep $INTERVAL
          #keeplooping=1;
          #while [[ $keeplooping -eq 1 ]] ; do
          #if [ -f /home/brocade/testbkp/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf ] ; then
          # break;
          # fi
          #done
          mv /home/brocade/testbkp/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf /home/brocade/testbkp/Conf'date +%Y%m%d'/$LINE.conf
          if [ "$?" -gt 0 ]
          then
          Log "Probleme pour le switch $LINE"
          fi
          #sleep $INTERVAL
          done
          1. Contributeur
            On est bien d'accord que ton script maintenant ressemble à ça :

            cat $SWLIST | while read LINE
            
            do
            Log "SAUVEGARDE DE $LINE"
            
            $BROCADE_SCRIPT |telnet $LINE
            echo "Script resultat : $?"
            sleep $INTERVAL
            
            mv /home/brocade/testbkp/Conf'date +%Y%m%d'/renamebeforestor.'date +%Y%m%d'.conf /home/brocade/testbkp/Conf'date +%Y%m%d'/$LINE.conf
            
            if [ "$?" -gt 0 ]
            then
            Log "Probleme pour le switch $LINE"
            fi
            
            done
        3. oui j ai passer certaines ligne en commentaire , mais comme je ne vois pas comment eviter qu'a la fin de la lecture du fichier texte il recommence a partir de la premier au lieu de stopper
          1. Contributeur
            T'es sur qu'il n'y a pas une autre boucle qui tourne ?