Bonjour,
Je fais un script pour changer de serveur "facilement" et je galère sur un truc...
voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
#! /bin/ksh
echo "    --------------------------------------"
echo "   |                                      |"
echo "   |  Procédure de changement de serveur  |"
echo "   |                                      |"
echo "    --------------------------------------"
cd /etc
if [ -f hosts ]; then
  # Sauvegarde du fichier hosts en hosts.old:
  cp hosts hosts.old
  if [ -f hosts.old ]; then
    # Le fichier host.old a bien été créé
    # Récupération du serveur actif:
    svr_old=`gawk -F" " '{if ($3 == "svrrx300") print $2}' hosts`
    echo "Le serveur actuel est $svr_old"
    echo "------------------------------"
    typeset -i rang=0
    typeset -i choix_svr=999
    typeset nom
    echo "Les serveurs potentiels sont:"
    gawk -F" " '{if ($3 == "#svrrx300") print $2;}' hosts |
    while read name
    do
      echo $rang" : "$name
      nom[rang]=$name
      rang=rang+1
    done
    echo "------------------------------"
    # Demande à l'utilisateur:
    echo "Choisissez parmi ces derniers quel serveur vous désirez utiliser"
    echo "(Entrer le numéro correspondant au serveur, se situant devant son nom)"
    read choix_svr
    echo "------------------------------"
    echo "Vous avez choisi le serveur numéro $choix_svr"
    echo "Soit le serveur nommé " ${nom[choix_svr]}
    echo "------------------------------"
    echo "Tests en cours"
    if [ $choix_svr -gt rang ]; then
      # L'utilisateur n'a pas entré un numéro valide
      echo "------------------------------"
      echo "Le numéro que vous avez entré n'est pas valide"
      echo "Le changement de serveur n'est pas possible"
    else
      # Le numéro entré par l'utilisateur est valide.
      # On teste l'accessibilité du serveur:
      /bin/ping -c 1 ${nom[choix_svr]}
      if [ $? = 0 ]; then
        # On démonte les répertoires de /DATA situés sur l'ancien serveur:
        sudo /bin/umount /DATA/INSPECTION
        sudo /bin/umount /DATA/SAPHIR
        sudo /bin/umount /DATA/CIVAMIS
        sudo /bin/umount /DATA/IMAGES
        sudo /bin/umount /DATA/CHANFREINS 
        sudo /bin/umount /DATA/TRAMES
        # On ajoute un # devant l'ancien serveur et on enlève celui devant le nouveau:
        cat hosts | sed -r -e "
        /$svr_old/{
        s/(svrrx300)/#\1/
        }
        /${nom[$choix_svr]}/{
        s/#(svrrx300)/\1/
        }" > hosts.new
        mv hosts.new hosts
        # On remonte les répertoires de /DATA sur le nouveau serveur:
        sudo /bin/mount /DATA/INSPECTION
        sudo /bin/mount /DATA/SAPHIR
        sudo /bin/mount /DATA/CIVAMIS
        sudo /bin/mount /DATA/IMAGES
        sudo /bin/mount /DATA/CHANFREINS
        sudo /bin/mount /DATA/TRAMES
        # On indique à l'utilisateur que le changement de serveur est effectif
        echo "------------------------------"
        echo "Le nouveau serveur est `gawk -F" " '{if ($3 == "svrrx300") print $2}' hosts`"
      else
        echo "------------------------------"
        echo "Le serveur choisi n'est pas actuellement connecté"
        echo "Le changement de serveur n'est pas possible"
      fi
    fi
  else
    # Le dossier est protégé en criture ou il n'y a plus de place
    echo "------------------------------"
    echo "Echec de création du fichier .old"
    echo "Le changement de serveur n'est pas possible"
  fi
else
  # Le fichier n'existe pas ( pas dans le bon répertoire?!)
  echo "------------------------------"
  echo "Fichier hosts non trouvé"
  echo "Le changement de serveur n'est pas possible"
fi
Mon problème est qu'après la boucle while, rang et nom sont vides!!!
Est-ce que quelqu'un peut m'expliquer pourquoi et m'aider à faire ce script?
Cordialement,
jula.