Bonjour,
Dans mon script ci-dessous, je souhaite (à la fin du script) afficher le récapitulatif des infos saisie et pinguer ces infos.
Pouvez-vous m'aider ? Je patine depuis qqjours.
Bonne journée.
Gab2grad
#!/bin/bash
echo "********************************************"
echo "* SCRIPT DE PERSONNALISATION DU RESEAU *"
echo "********************************************"
echo "******************************************"
echo "* MERCI DE REMPLIR LES CHAMPS CI-DESSOUS *"
echo "******************************************"
read -p "Adresse IP de la machine: " IPADDR
read -p "Masque de sous reseau: " NETMASK
read -p "Passerelle: " GATEWAY
read -p "DNS #1: " DNS1
read -p "DNS #2: " DNS2
echo "IPADDR=$IPADDR" >> /etc/sysconfig/network-scripts/ifcfg-ens192
echo "NETMASK=$NETMASK" >> /etc/sysconfig/network-scripts/ifcfg-ens192
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-ens192
echo "GATEWAY=$GATEWAY" >> /etc/sysconfig/network
echo "nameserver $DNS1" >> /etc/resolv.conf
echo "nameserver $DNS2" >> /etc/resolv.conf
echo "CONFIRMEZ VOUS VOTRE SAISIE ? (OUI/NON)?"
select reponse in OUI NON
do
case $reponse in
# réponse oui à la question
"OUI") break;;
# réponse non à la question
"NON")
read -p "Adresse IP: " IPADDR
read -p "Masque de sous reseau: " NETMASK
read -p "Passerelle: " GATEWAY
read -p "DNS #1: " DNS1
read -p "DNS #2: " DNS2
echo "IPADDR=$IPADDR" >> /etc/sysconfig/network-scripts/ifcfg-ens192
echo "NETMASK=$NETMASK" >> /etc/sysconfig/network-scripts/ifcfg-ens192
echo "BOOTPROTO=none" >> /etc/sysconfig/network-scripts/ifcfg-ens192
echo "GATEWAY=$GATEWAY" >> /etc/sysconfig/network
echo "nameserver $DNS1" >> /etc/resolv.conf
echo "nameserver $DNS2" >> /etc/resolv.conf
echo "CONFIRMEZ VOUS VOTRE SAISIE ? (1 OUI /2 NON)?";;
# Autres réponse à la question à la question
"*") continue;;
esac
done
# Précisions
Posté par lolop (site web personnel) . Évalué à 3.
Préliminaire: revoir la syntaxe wikiesque pour avoir le code propre
Précision à apporter: qu'est-ce que «pinguer ces infos» ?
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Précisions
Posté par gab2grad . Évalué à 1.
Bonjour et merci.
Dans mon script, je saisie une @IP pour la carte réseau de la machine, puis la masque de sous réseau, puis la passerelle, le DN1 et le DNS2.
Si je réponds, 2 (ou non), le script se relance avec la même demande (saisie de tous les champs).
Si je réponds, 1 (ou oui), le script, le user sort du script.
Je souhaiterais afficher (à la fin du script) les différentes adresses IP saisies ci-dessus et effectuer dans le script un ping de ces adresses là.
Merci d'avance.
# Divers problèmes
Posté par _kaos_ . Évalué à 2.
Salut,
Déjà tant mieux de proposer un script à commenter, ça va aider.
Que se passe-t'il si l'utilisateur répond une première fois non (la conf est faite…) ?
Que se passe-t'il si l'utilisateur répond une deuxième fois non (on sort avec une conf mauvaise…) ?
La logique est bancale.
Ce qu'il faut faire, c'est (en pseudo_code) :
Donc il faut remonter ta logique de boucle et redescendre ta logique d'écriture.
A partir de ça, ça sera mieux.
Matricule 23415
[^] # Re: Divers problèmes
Posté par gab2grad . Évalué à 1.
Bonjour et merci.
Dans mon script, je saisie une @IP pour la carte réseau de la machine, puis la masque de sous réseau, puis la passerelle, le DN1 et le DNS2.
Si je réponds, 2 (ou non), le script se relance avec la même demande (saisie de tous les champs), idem si je réponds de nouveau "non"..
Si je réponds, 1 (ou oui), le user sort du script.
Je souhaiterais afficher (à la fin du script) les différentes adresses IP saisies ci-dessus et effectuer dans le script un ping de ces adresses là.
Merci d'avance.
[^] # Re: Divers problèmes
Posté par _kaos_ . Évalué à 2.
Salut,
Essaye de répondre deux fois non à ton script, tu y verra le problème de logique ;-)
Car non, il ne se relance pas tout seul magiquement.
Il ne devrait pas y avoir plusieurs fois les mêmes lignes demandant les infos. Il faut revoir la logique !
Matricule 23415
[^] # Re: Divers problèmes
Posté par gab2grad . Évalué à 1.
En répondant non (choix 2) même plusieurs fois, la boucle se relance et la demande de saisie des @IP pour les différents champs est de nouveau demandée …
[^] # Re: Divers problèmes
Posté par Tonton Benoit . Évalué à 4.
C'est
select
qui se comporte comme une boucle[^] # Re: Divers problèmes
Posté par _kaos_ . Évalué à 1.
Salut,
Oui, merci, j'ai vu un peu plus tard. :-)
Il n'en reste pas moins que la logique est dans le mauvais sens !
Matricule 23415
# je vais (peut-etre) dire une betise
Posté par NeoX . Évalué à 4.
dans ton script, actuellement,
tu demandes des infos,
tu stockes les infos,
puis tu demandes confirmation…
comme tu ne fais qu'ajouter des infos,
si la personne repond non…
ben la configuration a deja été modifiée,
et elle va ajouté encore des infos…
ne vaudrait-il pas mieux :
- demander les infos,
- demander la validation
- si oui => ecrire les infos (en remplacant les anciennes et non en ajoutant au fichier
- si non => redemander les infos (ou demander l'annnulation)
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 0.
Bonjour et merci.
Dans mon script, je saisie une @IP pour la carte réseau de la machine, puis la masque de sous réseau, puis la passerelle, le DN1 et le DNS2.
Si je réponds, 2 (ou non), le script se relance avec la même demande (saisie de tous les champs).
Si je réponds, 1 (ou oui), le user sort du script.
Je souhaiterais afficher (à la fin du script) les différentes adresses IP saisies ci-dessus et effectuer dans le script un ping de ces adresses là.
Merci d'avance.
[^] # Re: je vais (peut-etre) dire une betise
Posté par Tonton Benoit . Évalué à 2.
Ben pour afficher, vu que tu utilises déjà
echo
partout dans ton script tu sait faire, genre :echo "Adresse IP de la machine: $IPADDR
Et pour le ping, en shell, c’est la sa force, toutes les commandes du système sont accessibles directement comme dans un terminal :
ping -c1 $IPADDR
Ou plus évolué :
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
J'ai mis les 5 commandes ping à la fin du script
A la fin de l'exécution du script, le ping se lance pour la 1ère @IP, puis on sort du script.
Je souhaiterais afficher le résultat du 1ère ping, puis du 2e …, puis afficher un résumé des différentes adresses saisies.
Merci.
[^] # Re: je vais (peut-etre) dire une betise
Posté par NeoX . Évalué à 2.
une piste
man ping
dans un terminal, te donnera toutes les options dispos pour la commande ping.pour les compter, pour afficher un resumé, etc
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
Bonjour et merci pour ces précisions.
Je teste et reviens vers vous.
bonne journée.
Laurent
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
Bonjour,
Pas top pour la suite. J'ai mis les commandes ping à la fin.
ping -c1 $IPADDR
ping -c1 $NETMASK
ping -c1 $GATEWAY
ping -c1 $DNS1
ping -c1 $DSN2
Mais dès le ping du "sous réseau", je sors du script (exécuté avec un user "de base" sans droit root).
Grrrr
[^] # Re: je vais (peut-etre) dire une betise
Posté par Tonton Benoit . Évalué à 2.
Pinger un netmask n'a pas baucoup de sens et retournera toujours une erreur, mais ce n’est pas sensé interrompre ton script, sauf s'il y a un
set -e
qui traine quelque-part.[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
Pas de set -e dans mon script.
En effet, pas de nécessité de pinger le masque de sous réseau.
Mais je sors immédiatement après le premier ping, celui de l'@IP de la carte …
[^] # Re: je vais (peut-etre) dire une betise
Posté par NeoX . Évalué à 2.
parceque ping envoie un signal de fin à ton script.
tu peux essayer de lancer un "sous shell" avec la syntaxe :
$(ping -c1 $ADDR)
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
Faire un shell supplémentaire avec cette commande ou rajouter la syntaxe dans le shell principal ?
Merci.
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1. Dernière modification le 29 juin 2016 à 16:44.
Je ne comprends pas pourquoi lancer ce sous SHELL ?
Mon script est le suivant :
HELP !!! Je craque ? Merci.
[^] # Re: je vais (peut-etre) dire une betise
Posté par NeoX . Évalué à 2.
et dans ta nouvelle version de ton script, tu executes toujours ton ping avant le mien (avec le sous shell), donc le comportement reste le meme, TON ping sort du script avant d'avoir fait les suivants.
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
Débutant script LINUX, j'ai du mal à comprendre ou interpréter ton post ci-dessus.
"Tu exécutes ton script avant le mien" ? Tu peux m'éclaircir ?
Comment dois-je m'y prendre pour sortir du ping @IP et enchainer avec un ping de la passerelle, puis des DNS …
Ton "sous SHELL" dans quelle partie de mon script doit-il être posté ? Que doit-il contenir ?
Je patauge …
Merci
[^] # Re: je vais (peut-etre) dire une betise
Posté par NeoX . Évalué à 2.
ton script execute le
ping $IPADDR
ping fait un exit, ca quitte alors ton script et ne passe pas à la suite.
je t'ai proposé de changer cela en
$(ping $IPADDR)
qui devrait lancer un sous-shell, faire le ping, quitter le sous shell, et revenir à la suite de ton script.
et toi tu laisses dans ton script
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1.
Bonjour,
Désolé, mais je rentre de congés.
Merci de votre réponse.
Cela dit, j'ai de nouveau modifié le script, je ne sors plus mais le script reste bloqué et ne se ferme plus, et donc, pas de ping …
Pouvez-vous m'éclaircir sur ce sujet ?
Merci.
[^] # Re: je vais (peut-etre) dire une betise
Posté par NeoX . Évalué à 2.
peut-etre parce que sous linux, un
ping 1.2.3.4
ne s'arrete jamais.
si tu veux qu'il s'arrete apres N ping, il faut faire
ping -c N 1.2.3.4
si tu veux qu'il n'affiche que le resultat du ping tu peux ajouter l'option
-q
exemple :
ping -q -c 3 1.2.3.4
va pinguer 3 fois l'ip 1.2.3.4, terminer et afficher le resultat
[^] # Re: je vais (peut-etre) dire une betise
Posté par gab2grad . Évalué à 1. Dernière modification le 05 août 2016 à 11:22.
Je dois pinguer l'adresse IP précédemment saisie.
Je dois rajouter la synthaxe suivante ?
ping -q -c 3 $IPADDR
Je désirerais aussi permettre à mon user TEST de démarrer le service réseau. On m'a parlé de /etc/sudoers.
Des infos ? Merci.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.