Boucle while

Fermé
hamadamoi Messages postés 20 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 7 juin 2014 - 29 avril 2014 à 10:48
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 29 avril 2014 à 17:35
salut,
j'ai besoin d'aide pour faire un script en shell :

recherche adresse ip dans fichier qui contient une adresse ip
stocké adresse ip1=192.168.0.1

recherche adresse ip le meme fichier

tant que adresse ip=adresse ip1

recherche adresse ip dans le meme fichier

tant que adresse ip notequal adresse ip1
stocké adresse ip2=192.168.0.2


la recherche de l'adresse ip sera exécute 4 ou 5 fois


merci

4 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
29 avril 2014 à 11:19
Salut.
je n'ai pas bien compris ton problème.
Donne nous :
-le format de ton fichier
-ce que tu attends en sorti de script.
Fait des phrase plutôt que ce pseudo algorithme peu clair;
0
hamadamoi Messages postés 20 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 7 juin 2014
29 avril 2014 à 12:21
salut Char Snipeur

voila mon script
#!bin/bash

#importer la page de testmire avec (wget) et metre dans un fichier spped.txt
wget -S http://mire.ipadsl.net/speedtest.php -O /root/spped.txt 2>&1

#chercher l'adresse ip du test
adresse_ip1=$(grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /root/spped.txt)

#chercher le debit de l'adresse ip1
debit1=$(grep -o 'Votre Bande Passante [^"]*' /root/ahmed/spped.txt | awk '{print $4}' )


normalement j'ai 3 ligne adsl (alors 3 adresse ip)
maintenant je veux metre adresse ip1 et debit 1 dans un tableau

et refaire la recherche 5 ou 6 fois
stocké les adresse ip (ip2 et ip3) dans le meme tableau
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
Modifié par Char Snipeur le 29/04/2014 à 12:52
declare -a ip
declare -a debit
for ipc in $(grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /root/spped.txt)
do  :
    ip[${#ip[*]}]=$ipc
    debit[${#debit[*]}]=$(grep -o 'Votre Bande Passante [^"]*' /root/ahmed/spped.txt | awk '{print $4}' ) 
done 

je n'ai pas testé, mais je ferai un truc comme ça.
http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/ar01s12.html
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
0
hamadamoi Messages postés 20 Date d'inscription lundi 21 avril 2014 Statut Membre Dernière intervention 7 juin 2014
29 avril 2014 à 17:24
salut
ca marche pas mais je pense que le tableau ca va compliqué les choses

revenant à mon scripte en haut:

je vais etre un peux claire mnt:

chaque fois que j'execute ces commandes :

#importer la page de testmire avec (wget) et metre dans un fichier spped.txt
wget -S http://mire.ipadsl.net/speedtest.php -O /root/spped.txt 2>&1

#chercher l'adresse ip du test
ip1=$(grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /root/spped.txt)

ca donne une adresse ip (soit ip1 ou ip2 ou ip3)


mnt je veux metre les commandes dans une boucle
si ip = ip1
wget -S http://mire.ipadsl.net/speedtest.php -O /root/spped.txt 2>&1
ip=$(grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /root/spped.txt)

si non enregistre ip2

wget ...
ip=....

si ip = ip1 et ip = ip2

wget -S http://mire.ipadsl.net/speedtest.php -O /root/spped.txt 2>&1
ip=$(grep -oE "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" /root/spped.txt)

si non enregistre ip3

merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
29 avril 2014 à 17:35
Salut,

Y'a un truc que je ne pige pas dans ton raisonnement ;-\

Quand tu dis :
chaque fois que j'execute ces commandes :
wget -S ...
ip1=$(grep ...


Tu fais ça pour déterminer l'adresse IP de ta connexion?
Tu ne la connais pas avant de lancer le script ?

En fait c'est quand tu disais "normalement j'ai 3 ligne adsl (alors 3 adresse ip) ". Les 3 lignes sont au même endroit ?

Parce que pour avoir son adresse IP externe un simple
curl ifconfig.me/ip
suffit ;-\
0