[Bash] plusieurs erreurs

Résolu/Fermé
buttbadger Messages postés 66 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 10 décembre 2021 - 22 mars 2007 à 15:45
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 23 mars 2007 à 01:32
bonjour tout le monde (duh ça m'énèrve de poster que pour demander de l'aide ; j'aimerais bien aider un jour aussi :p )

On a commencé le bash à ma formation, mais les cours se sont résumés à "Aujourd'hui, pour commencer le bash.........vous allez vous documenter sur le net et apprendre tout seul et vous allez nous faire un script utile!"
mdrrr quelle précision -.-

Enfin bon, j'ai trouvé une petite idée intéressante, c'était de concevoir un script qui génère un fichier /etc/network/interfaces
Avec les docs que je trouve, j'arrive à faire un truc qui semble marcher... Mais je tombe sur différentes erreurs après plusieurs essais et je reste bloqué sur celle-ci :
./interfacemaker.sh: line 37: syntax error near unexpected token `"Choisir un nom pour votre fichier :"'
./interfacemaker.sh: line 37: `echo "Choisir un nom pour votre fichier :"'


voici le script en entier :
#!/bin/bash
clear
echo "Bonjour et bienvenue dans InterfacesMaker"
echo 
echo "Quel est le nom du périphérique réseau ? (en général eth0)"
read ethernet
echo "Votre carte réseau : $ethernet"
echo
echo "Utilisez-vous un serveur DHCP ? (o/n)"
read replytype

case $replytype in
[yYoO]*)
	echo "Quel est l'IP attribuée à la machine ?"
	read address
	echo "Adresse : $address"
	echo 
	echo "Quel est votre masque sous-réseau ?"
	read netmask
	echo "Masque sous-réseau : $netmask"
	echo 
	echo "Quel est l'IP du pont réseau ?"
	read gateway
	echo "Pont réseau : $gateway"
	echo 
	echo "Donnez une IP de serveur DNS."
	read dnsserver1
	echo "Serveur DNS : $dnsserver1"
	echo "" ;;
[nN]*)	echo "DHCP" ;;
echo "Choisir un nom pour votre fichier :"
read namefile
echo "Génération du fichier interfaces $namefile.conf dans votre répertoire home"

if [ $replytype = "o" ]
then
echo -e "# Fichier généré grâce au script interfacemaker.sh \n \nauto lo \niface lo inet loopback \n \nauto $ethernet\niface $ethernet inet static \n	address $address \n	netmask $netmask \n	gateway $gateway \n	dns-nameservers $dnsserver1 \n" > $HOME/$namefile.conf

elif [ $replytype = "o" ]
then
echo -e "# Fichier généré grâce au script interfacemaker.sh \n \nauto lo \niface lo inet loopback \n \nauto $ethernet\niface $ethernet inet static \n	address $address \n	netmask $netmask \n	gateway $gateway \n	dns-nameservers $dnsserver1 \n" > $HOME/$namefile.conf

else
echo -e "# Fichier généré grâce au script interfacemaker.sh \n \nauto lo \niface lo inet loopback \n \nauto $ethernet \niface $ethernet inet dhcp \n" > $HOME/$namefile.conf
fi

echo "Fichier généré. Voulez-vous l'ouvrir dans un éditeur de texte ?"
echo "o/n"
read openfile1

case $openfile1 in
[yYoO]*)
	echo "Quel interface graphique utilisez-vous ?"
	echo "1/2/3/4"
	echo
	echo "1. GNOME"
	echo "2. KDE"
	echo "3. XFCE"
	echo "4. Autre ou pas d'interface"
	read openfile2

	if [ $openfile2 = "1" ]
	then
	echo "Ouverture de gedit"
	gedit $HOME/$namefile.conf

	elif [ $openfile2 = "2" ]
	then
	echo "Ouverture de kate"
	kate $HOME/$namefile.conf

	elif [ $openfile2 = "3" ]
	then
	echo "Ouverture de xedit"
	xedit $HOME/$namefile.conf

	else
	echo "Ouverture de GNU Nano"
	editor $HOME/$namefile.conf
	fi ;;

[nN]*)
	echo "" ;;
clear
echo "Votre nouveau fichier interfaces est crée. Pour l'utiliser sur votre machine, tapez les commandes suivantes en root :"
echo "cp /etc/network/interfaces /etc/network/interfaces.back"
echo "rm /etc/network/interfaces"
echo "rename $HOME/$namefile.conf /etc/network/interfaces"
exit


Aurai-je raté quelque chose??

merci de votre aide :)

4 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
22 mars 2007 à 15:48
[nN]*) echo "DHCP" ;;
echo "Choisir un nom pour votre fichier :"

N'aurais-tu pas oublié un "esac" entre ces deux lignes ?
0
buttbadger Messages postés 66 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 10 décembre 2021 16
22 mars 2007 à 15:50
esac??? qu'est-ce que c'est?

désolé je suis le parfait n00b en bash :p
0
buttbadger Messages postés 66 Date d'inscription mardi 17 octobre 2006 Statut Membre Dernière intervention 10 décembre 2021 16
22 mars 2007 à 15:53
en tout cas le rajouter ça a résolu le problème :p

il marche super maintenant :) merci bcp :)
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
23 mars 2007 à 01:32
De rien :)

case variable
<cas1> ) action1 ;;
<cas2> ) action2 ;;
esac (= fin de case !)

En fait : "case <variable>" defini des actions en fonctions de cas (comparaison de la variable avec les cas)
Les cas ici sont des "expressions régulieres"
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
22 mars 2007 à 16:03
Salut,

Tant qu'à faire rajoutes en un (esac) entre "echo "" ;;" et "clear" :
[nN]*)
	echo "" ;;
clear
Ce qui donnera :
[nN]*)
	echo "" ;;
esac
clear
;-))
0