Modifier une ligne d'un fichier
salut
je suis en train de m'embrouiller alors je demande de l'aide...
le but du jeu est de proposer à l'utilisateur de choisir son serveur...
pour cela, je dois modifier le fichier /etc/hosts qui est formaté comme ça:
@IP nom alias
en fait, il faut que je trouve la ligne ou alias vaut svrrx300,
je retiens le nom associé, il s'agit du serveur courant
je cherche tous les noms qui ont #svrrx300 comme alias,
ce sont les serveurs potentiels
je propose ces noms à l'utilisateur qui doit en choisir un en entrant son nom au clavier
une fois ce serveur choisi, je vais modifier l'alias correspondant de #svrrx300 à svrrx300
puis je change le svrrx300 de l'ancien serveur en #svrrx300
si ce n'est pas très clair tout ça alors n'hésitez pas à poser des questions...
voici mon code:
Code:
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
|
#!/bin/sh
#cd /etc
if [ -f hosts ]; then
echo "sauvegarde du fichier hosts en hosts.old"
cp hosts hosts.old
if [ -f hosts.old ]; then
echo "fichier .old créé"
svr_old=`gawk -F" " '{if ($3 == "svrrx300") print $2}' hosts`
echo "le serveur actuel est $svr_old"
echo "les serveurs potentiels sont:"
gawk -F" "'{if($3 == "#svrrx300") print $2}' hosts
echo "choisissez parmi ces derniers quel serveur vous désirez utiliser (entrez son nom)"
read choix_svr
echo "vous avez choisi le serveur $choix_svr"
echo "modification en cours..."
gawk -F" " '{if($2 == $svr_old) sed -e s/svrrx300/\#svrrx300/g}' hosts
gawk -F" " '{if($2 == $choix_svr) sed -e s/\#svrrx300/svrrx300/g}' hosts
echo "le nouveau serveur est `gawk -F" " '{if ($3 == "svrrx300") print $2}' hosts`
else
"échec création fichier .old"
fi
else
épas de fichier hosts"
fi |
en fait tou fonctionne jusqu'au sed...je ne voi pas comment mettre et enlever les # devant les svrrx300...
quelqu'un a une idée?
cordialement,
jula.