Problème de ping avec bash

Résolu/Fermé
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 - 16 mars 2016 à 14:49
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 - 16 mars 2016 à 20:56
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

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
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 10
16 mars 2016 à 15:35
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
UnGars > chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017
16 mars 2016 à 15:47
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
chrisee Messages postés 171 Date d'inscription dimanche 23 février 2014 Statut Membre Dernière intervention 29 juillet 2017 10 > UnGars
16 mars 2016 à 20:56
Merci beaucoup,set -x m'a permis de voir le problème,resolved
0