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

  1. Contributeur
    Salut,

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

    0
    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
      0
      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.
        0
    2. oui j ai juste supprimer klk lignes sinon l'affichage n'est pas correcte sur ce site
      0
      1. je pensais a klk du genre cependant je n'ai aucune idée sur la syntaxe ...
        0
        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
          0
      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
        0
        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
          0
          1. Contributeur
            Quelle erreur ?

            A quoi sert cette boucle exactement ? Où est initialisée la variable "$keeplooping" ?
            0
        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
          0
          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
            0
        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
          0
          1. Contributeur
            T'es sur qu'il n'y a pas une autre boucle qui tourne ?
            0