CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

aide exo Linux

Chicken_Boubou
Chicken_Boubou
Niveau 10
06 décembre 2007 à 18:50:40

bonjour! Alors voilà, je dois faire une xercie sur Linux pour demain, j´ai commencé mon script, seuleument, il y a des erreurs de syntaxe! Voilà déjà l´énoncé:

Créez un script qui permet de mettre en place le réseau. Il doit prendre 1 argument qui sera soit start, stop, restart,
status ou zap. Il détectera automatiquement toutes les cartes réseaux et permettra de spécifier quelle carte
réseau utiliser.

1. Il devra lire le fichier de configuration (ci-joint) qui contiendra les informations suivantes
sur une interface :

• L’interface doit elle récupérer une adresse dynamiquement (DHCP) ou bien doit elle être statique.

• Dans le cas d’une adresse statique, quelle est l’adresse IP, l’adresse de broadcast, quelle est la passerelle par défaut
(gateway), quelles sont les adresses des DNS, ... à attribuer.

• Dans le cas d’une attribution dynamique via DHCP, quel est le nom de la machine à envoyer au DHCP (hostname),
quel est le délai d’attente avant l’arrêt des requêtes DHCP (timeout).

Exemple 1.2. Fichier de configuration :

  1. Mettre a yes pour activer l’adressage automatique,
  2. sinon mettre a no

DHCP=yes

  1. Paramètres en cas d’adressage statique

NETADDR=192.168.0.10
BCAST=255.255.255.0
NETMASK=192.168.0.255

  1. Séparez les DNS par des :

DNS=192.168.0.1:212.30.96.108
GATEWAY=192.168.0.1

  1. Paramètres en cas d’adressage via DHCP
  2. Timeout en secondes

TIMEOUT=5
HOSTNAME=`hostname`

2. Il devra prendre en argument différents paramètres que voici :

start : Le script devra lire un fichier de configurations (par exemple, net.conf, ...) et mettre en place les différentes interfaces
suivant les paramètres lus dans ce fichier de configuration :

stop : Les interfaces devront alors être démontés, le client DHCP arrêté si nécessaire.

restart : Appels successifs de stop puis start.

status : L’argument status permettra de déterminer si le script a déjà été démarré ou non.

zap : L’argument zap permettra de forcer l’état du script à stop.

3. Le script comportera les variables suivantes :
• Le nom et le chemin vers le client DHCP : DHCP_PROG
• Le nom et le chemin vers le fichier temporaire : TEMP_FILE
• Le chemin vers le script qui contient le fichier de configuration : CONF_DIR

Maintenant, voilà ce que j´ai fait:
-Créer un répertoire bin dans /home/vair (vair est mon user)
-dans bin, j´ai créer un fichier net.conf, qui est le fichier de configuration donné dans l´exercice (c´est le prof qui nous a dit de faire ça)
- j´ai donc ensuite écrit mon script, que voici:

  1. !/bin/bash

source net.conf
read -p "Quelle commande voulez vous éxécuter, Start, Stop, Restart,Status,Zap ? " reponse case "$reponse" in

Start)
if [ $DHCP= "yes" ]; then
`dhclient`

;;

Stop)
`ifconfig eth0 down`

;;
Restart)
`ifconfig eth0 down` ;
if [ $DHCP= "yes" ]; then
`dhclient`

;;
Status)

;;

Zap)
echo "" ;;

Voilà, quand je lance, il me demande bien la commande, mais peut importe celle que je choisis, il me met trois erreurs:
./script.sh line 4: read: `´: not a valid identifier
./script.sh line 5: syntax error near unexpected token `)´
./script.sh line 5: ` Start)´

voilà, alors je ne comprend pas ces erreurs,si seuleument quelqu´un pouovait me les expliquer!

Merci d´avance!

PS: Je n´ai aps trouvé pour Status, et je suis casiment sur que Zap est faux, mais je préfère les trouver tout seul!

PS2: Désolé pour mon premier topic, il est vrai que ce n´était pas, sympa de vous demander de faire ça a ma place! Désolé!

chris_27
chris_27
Niveau 10
06 décembre 2007 à 20:56:14

question bête : pourquoi mets-tu des ` autour des commandes dhclient et cie alors que tu n´en mets pas pour echo ?

Ce sont toutes des commandes, donc ça devrait employer avec la même syntaxe. (celle que tu utilises pour echo à en croire le message d´erreur :-))) )

Sinon, à quoi sert le fichier dont le nom est stocké dans $TEMP_FILE ? (cela aurait-il un lien avec le code que tu dois faire pour status ?)

vegehannnnnn
vegehannnnnn
Niveau 9
06 décembre 2007 à 22:36:39

J´ai pas testé (par flemme :o)) ), donc il doit y avoir des erreurs, mais l´idée est là :
http://rafb.net/p/slvsO191.html

Je stocke le statut dans TEMP_FILE, je ne sais pas si c´est ce qui est demandé (l´énoncé est flou à ce sujet).
En outre, il n´y a aucune gestion des erreurs et je mets en dur l´interface réseau à utiliser. À toi d´améliorer le script pour :
- qu´il fonctionne ;)
- qu´il gère les erreurs
- qu´il détecte les carte réseau et spécifie celle à utiliser

@+

vegehannnnnn
vegehannnnnn
Niveau 9
06 décembre 2007 à 22:38:13

Je viens de remarquer une erreur, remplace dans le script « resolv.conf » par « /etc/resolv.conf »

chris_27
chris_27
Niveau 10
06 décembre 2007 à 22:57:06

1) tu es trop gentil :coeur:

2) le lien ne marche pas :snif2:

vegehannnnnn
vegehannnnnn
Niveau 9
06 décembre 2007 à 23:02:37

1) Merci :coeur:
Enfin c´était surtoût pour passer le temps en attendant « La méthode Cauet ». :gni: :dehors:

2) Arf chez moi il passe bien pourtant. :/
Allez dans le doute, un bon gros paste des familles sur le forum :
(Attention les yeux ça va être moche sans l´identation -- déjà qu´avec, c´est pas triste... :o)) ) :

  1. !/bin/bash

DHCP_PROG=/sbin/dhclient
CONF_DIR=/usr/local/etc/net
TEMP_FILE=/tmp/status

IFCONFIG=/sbin/ifconfig
IFACE=eth0
ROUTE=/sbin/route

source $CONF_DIR/net.conf

static_ip () {
# Configuration des DNS
echo $DNS | tr -s ´:´ ´\n´ > /etc/resolv.conf
# Configuration de la passerelle
$ROUTE add default gw $GATEWAY
# Configuration de l´interface
$IFCONFIG $IFACE $NETADDR broadcast $BCAST netmask $NETMASK up

return 0
}

do_start () {
if [ $DHCP = "yes" ] then
$DHCP_PROG $IFACE
else
static_ip
fi
echo "status:1" > $TEMP_FILE
return 0
}

do_stop () {
$IFCONFIG $IFACE down
echo "status:0" > $TEMP_FILE
}

case "$1" in
start)
do_start
exit 0
;;
stop)
do_stop
exit 0
;;
restart)
do_stop
do_start
exit 0
;;
status)
if [ -f $TEMP_FILE ] then
if [ `cut -f 2 -d ´:´ $TEMP_FILE` = 1 ]
echo "Le script a été démarré"
else
echo "Le script n´a pas été démarré
fi
else
echo "Le script n´a pas été démarré"
fi
exit 0
;;
zap)
echo "status:0" > $TEMP_FILE
exit 0
;;
*)
echo "Mauvaise option"
exit 0
;;
esac

vegehannnnnn
vegehannnnnn
Niveau 9
06 décembre 2007 à 23:32:04

Je viens de voir une autre erreur.
Le fichier resolv.conf, n´est pas correctement renseigné.
Ajoute ceci en dessous du echo $DNS... :
sed -i "s/^\(.\)/nameserver \1/" resolv.conf

vegehannnnnn
vegehannnnnn
Niveau 9
06 décembre 2007 à 23:32:36

Coquille :
sed -i "s/^\(.\)/nameserver \1/" /etc/resolv.conf
:o))

chris_27
chris_27
Niveau 10
07 décembre 2007 à 00:11:19

3) t´as vraiment rien d´autre à faire ? :-p

vegehannnnnn
vegehannnnnn
Niveau 9
07 décembre 2007 à 00:28:19

Si mais des trucs chiants comme la mort, alors tout moyen de procrastiner est le bienvenu. ^^
Faudrait quand-même que je fasse disparaitre les six sacs poubelles et les huit kilos de poussières pour ne pas effrayer les futurs locataires potentiels de mon appartement susceptibles de venir visiter ce week-end... :o))

´Fin bon faut dormir aussi, du coup : Gute Nacht !

Dargor
Dargor
Niveau 10
07 décembre 2007 à 09:14:08

Je parie que t´auras même pas un merci :o))

vegehannnnnn
vegehannnnnn
Niveau 9
07 décembre 2007 à 10:12:29

Je viens de voir son PS qui disait qu´il voulait faire tout seul le « status » et le « zap », j´aurais peut-être droit à des reproches. :rire2:

chris_27
chris_27
Niveau 10
07 décembre 2007 à 13:01:11

Tu as de la chance que c´est pas un de mes élèves surtout. :-))) (en même temps, je ne suis pas encore prof, c´est vrai).

vegehannnnnn
vegehannnnnn
Niveau 9
07 décembre 2007 à 13:14:57

En fait c´est moi son prof, je voulais le piéger.
Je l´ai reconnu tout de suite, y´a qu´un seul John Chickenboubou parmi mes élèves. :o))

chris_27
chris_27
Niveau 10
07 décembre 2007 à 13:21:24

héhé :rire:

At0m3
At0m3
Niveau 8
08 décembre 2007 à 14:01:06

Au faite, prof de quoi ?

chris_27
chris_27
Niveau 10
08 décembre 2007 à 14:26:33

Je ne sais pas encore :o))

Maths ou info.

chris_27
chris_27
Niveau 10
08 décembre 2007 à 14:38:20

Ah oui, histoire de te rassurer : quand je dis info, il s´agit d´enseigner la programmation ou de l´informatique théorie. (donc pas la création de site web :-))) )

At0m3
At0m3
Niveau 8
08 décembre 2007 à 15:00:00

Ouf ! ;- )

Ba bonne chance contre tout ces vilains garnements (ça va sans doute aller avec des élèves du supérieur :-) )

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware