Boucle while

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

  1. Contributeur
    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;
    1. 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
      1. Contributeur
        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
        1. 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
          1. Contributeur
            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 ;-\