Bonjour,
Je fais un script pour changer de serveur "facilement" et je galère sur un truc...
voici le code:
Mon problème est qu'après la boucle while, rang et nom sont vides!!!
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
Est-ce que quelqu'un peut m'expliquer pourquoi et m'aider à faire ce script?
Cordialement,
jula.
Partager