Problème de ping avec bash

Résolu
chrisee Messages postés 212 Statut Membre -  
chrisee Messages postés 212 Statut Membre -
Bonjour,

J'ai un fichier text dans lequel se trouve sur une ligne d'une part,à gauche le nom du sous reseau et à droit les adresses ip se trouvant dans celui-ci,ex:s_res1 ip1,ip2,ip3, sur une ligne et la même logique pour toutes les lignes,et l'objectif du script c'est demander à l'utilisateur d'entrer le nom du sous reseau dans lequel il veut connaitre les hotes online,et quand il les trouve il les enregistre dans un fichier,voici mon script:


#!/bin/bash
#Un script qui filtre les adresses IP en ligne et qui les affiches les ip en ligne
touch sub_ips_online.txt
touch pings.txt
online="ttl"
echo -e "Dans quel sous-reseau voulez vous verifier la connectivite des hotes:\c \t"
read s_rx
if [[ $(grep $s_rx sous_reseaux.txt|cut -d " " -f 1 ) == $s_rx ]];then
for i in `seq 1 4`;do
ping -c 1 $(grep $s_rx sous_reseaux.txt |cut -d " " -f 2|cut -d "," -f $i ) > pings.txt
if [[ $(echo $(ping -c 1 $(cat pings.txt |grep "ttl" |cut -d " " -f 4 |cut -d ":" -f 1 ) |grep "ttl" |cut -d " " -f 6 |cut -d "=" -f 1)) == $online ]];then
echo -e "Hotes du sous $s_rx en ligne\n"
echo -e "============================\n"
ping -c 1 $(cat pings.txt |grep "ttl"|cut -d ":" -f 1|cut -d " " -f 4) >> sub_ips_online.txt
fi
done
else
echo "Entrez un nom de sous_reseau valide"
fi

Et je pense que le problème se trouve au nive du ping de la ligne 10,mais je ne sais à quel endroit vu que tout semble logique,vu que quand j'essie de faire des essaies dans mon terminal,les autres repondent bien,mais je ne sais ps si ce sont les parentheses ou la mise en valeur,merci pour vos aides.

1 réponse

  1. UnGars
     
    Salut,

    Dans un terminal tapes :

    read -p "Dans quel sous-reseau voulez vous verifier la connectivite des hotes : " s_rx
    grep "${s_rx}" sous_reseaux.txt
    grep "${s_rx}" sous_reseaux.txt | cut -d " " -f 1


    Et copie/colle le résultat ici.
    0
    1. chrisee Messages postés 212 Statut Membre 10
       
      Voici ce que ça donne:

      root@jochri9:/exercice# read -p "Dans quel sous-reseau voulez verifier la connectivite des hotes: " s_rx
      Dans quel sous-reseau voulez verifier la connectivite des hotes: local1
      root@jochri9:/exercice# grep "${s_rx}" sous_reseaux.txt
      local1 127.0.0.1,192.168.1.10,192.168.1.107,192.168.1.200,192.168.1.74,
      root@jochri9:/exercice# grep "${s_rx}" sous_reseaux.txt |cut -d " " -f 1
      local1
      0
      1. UnGars > chrisee Messages postés 212 Statut Membre
         
        Ok ça c'est bon.

        Rajoute
        set -x
        en dessous du shebang pour voir ce qui est réellement interprété dans ton script.

        #!/bin/bash
        set -x

        Et relance ton script.
        0
      2. chrisee Messages postés 212 Statut Membre 10 > UnGars
         
        Merci beaucoup,set -x m'a permis de voir le problème,resolved
        0