J'exécute un script qui repose sur le réseau en cours et un partage réseau monté. Le script s'exécute lors de la connexion (ce qui se produit automatiquement après le démarrage). Le problème est qu'au moment où le script s'exécute, je n'ai généralement pas encore d'adresse IP (DHCP). Pour le moment, je dors simplement le script pendant 15 secondes, mais je n'aime pas du tout cette approche, car je veux pouvoir dire à l'utilisateur si quelque chose ne va pas.
Mon plan est de boucler alors que je n'ai pas encore d'adresse IP et de continuer quand je le fais. Surtout, il doit expirer après un certain temps. Ce que j'ai if [ ifconfig | grep "192.168.100" ];
imaginé, c'est de mais ce qui se passe, c'est que grep consomme le ];
et ne l'aime pas. Ensuite, bash est également contrarié, car il ne peut pas trouver le ];
grep mangé. Et puis je n'ai même pas mis en œuvre le délai d'attente.
Quelqu'un a suggéré de conserver une variable et de dormir, disons, une seconde à chaque itération et d'augmenter cette variable à chaque fois. Voici mon script complet (ne fonctionne pas) (je suis assez nouveau dans le script bash):
x=0
while [ ifconfig | grep "192.168.100." > /dev/null ]; do
echo "no nework"
if "$x" -gt 200; then
#Time out here
exit 1
x=$((x+1))
sleep .1
fi
done
#continue with rest of script...
Tout pointeur dans la bonne direction serait grandement apprécié!
grep
sortie vers /dev/null
. Utilisez -q
plutôt l'option. Et aussi je ne pense pas que le fait de saluer ifconfig soit une bonne idée. Pourquoi ne pas utiliser à la ping
place?
ping
peut échouer en fonction du réseau en question. Il est préférable de simplement vérifier la configuration de fonctionnement du système.
network-online.target
...