Boucle while

hamadamoi Messages postés 24 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  2. hamadamoi Messages postés 24 Statut Membre
     
    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
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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
  4. hamadamoi Messages postés 24 Statut Membre
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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