Edit : Script Test ping (encore)

Edit : Script Test ping (encore) - Divers - Programmation

Marsh Posté le 26-06-2007 à 16:41:13    

Bonjour  :hello:  
Je tourne sous Debian et j'aimerai  
faire un petit script qui ping certaine IP particuliere sur le reseau local et selon la reponse du ping j'execute un script ou une commande si le ping est positif ou je ping l'IP suivante si le ping serai négatif.
Si quelqu'un pourrait m'aider...  :whistle:  
Merci
 
Edit : Mon script avec les if marche parfaitement mais c'est pas evolutif du tout.
J'aimerai faire un

for i de [IP de depart] a [IP de fin]


Enfin je sais pas si c'est possible
 :hello:


Message édité par Ming75 le 29-06-2007 à 16:42:45
Reply

Marsh Posté le 26-06-2007 à 16:41:13   

Reply

Marsh Posté le 26-06-2007 à 16:44:06    

tu dois pouvoir t'en sortir en testant la valeur de $? après le ping.
 


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 26-06-2007 à 16:54:49    

un p'ti grep cut dans un fichier temporaire de la sortie de ping
ping ip -c 1 > toto.txt

 

if toto.txt
$tavariable = `grep cut +parametreskibontbien toto.txt`
if tavariable == test
tacommande
else
tonautrecommande
fi
fi


Message édité par memaster le 26-06-2007 à 16:55:23

---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
Reply

Marsh Posté le 26-06-2007 à 17:02:29    

memaster a écrit :

un p'ti grep cut dans un fichier temporaire de la sortie de ping
ping ip -c 1 > toto.txt
 
if toto.txt
$tavariable = `grep cut +parametreskibontbien toto.txt`
if tavariable == test
tacommande
else
tonautrecommande
fi
fi


 
[:vomi]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 26-06-2007 à 17:03:46    


ct vite fait :o
il y a surement d'autres moyens plus "elegants"


Message édité par memaster le 26-06-2007 à 17:04:23

---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
Reply

Marsh Posté le 26-06-2007 à 17:12:13    

Les codes de retour c'est pas fait pour les chiens non plus.
C'est quoi l'utilité de sortir des grep/cut pour vérifier que la commande a échoué ou réussi alors qu'il y a un mécanisme conçu pour cela?


Message édité par l0ky le 26-06-2007 à 17:13:13
Reply

Marsh Posté le 26-06-2007 à 17:13:31    

j'ai un truc un peu crade en python aussi :

Code :
  1. import os
  2. import re
  3. import time
  4. import sys
  5. lifeline = re.compile(r"(\d) received" )
  6. report = ("No response","Partial Response","Alive" )
  7. print time.ctime()
  8. for host in range(1,255):
  9.    ip = "192.168.0."+str(host)
  10.    pingaling = os.popen("ping -q -c2 "+ip,"r" )
  11.    print "Testing ",ip,
  12.    sys.stdout.flush()
  13.    while 1:
  14.       line = pingaling.readline()
  15.       if not line: break
  16.       igot = re.findall(lifeline,line)
  17.       if igot:
  18.            print report[int(igot[0])]
  19. print time.ctime()


Message édité par black_lord le 26-06-2007 à 17:14:09

---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 26-06-2007 à 17:14:09    

faut fermer les balises [:cerveau dawa]

Reply

Marsh Posté le 26-06-2007 à 17:14:38    

hého [:cerveau o]


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 26-06-2007 à 17:17:26    

a mon avis il vaudrait mieux coder la chose en ruby.


---------------
Intermittent du GNU
Reply

Marsh Posté le 26-06-2007 à 17:17:26   

Reply

Marsh Posté le 26-06-2007 à 17:50:41    

fping / smokeping / snmp


Message édité par Taz le 26-06-2007 à 17:51:02
Reply

Marsh Posté le 26-06-2007 à 18:04:14    

moi j'laime bien ton truc memaster62 :D
 
#!/bin/bash
 
ip="192.168.0.1"
loss="50"
ipcount="10"
 
if [ `ping -c $ipcount $ip | grep loss | sed s/%.*//g | sed s/.*,\ //g` -gt $loss ]
then
    echo "Error"
else
    echo "Ok"
fi

Reply

Marsh Posté le 26-06-2007 à 18:09:32    

nayfe a écrit :

moi j'laime bien ton truc memaster62 :D
 
#!/bin/bash
 
ip="192.168.0.1"
loss="50"
ipcount="10"
 
if [ `ping -c $ipcount $ip | grep loss | sed s/%.*//g | sed s/.*,\ //g` -gt $loss ]
then
    echo "Error"
else
    echo "Ok"
fi


belle [expression reguliere] ;)


---------------
ma conduite intérieure .:R | memaster pilote officiel de la HFR Badoit-Auchan F1 Team | zéro tracas, zéro blabla MMa.ster
Reply

Marsh Posté le 26-06-2007 à 18:15:45    

nayfe a écrit :

moi j'laime bien ton truc memaster62 :D

 

#!/bin/sh
if ping -c 1 127.0.0.1 > /dev/null ; then
 echo success
else
 echo failed
fi


est beaucoup plus propre, et on ne peut plus simple


Message édité par l0ky le 26-06-2007 à 18:24:16
Reply

Marsh Posté le 26-06-2007 à 18:39:34    

Merci a tous pour votre aide en tout cas.
et j'ai bien ce script  :)  

l0ky a écrit :

#!/bin/sh
if ping -c 1 127.0.0.1 > /dev/null ; then
 echo success
else
 echo failed
fi


est beaucoup plus propre, et on ne peut plus simple


 
Il me reste plus qu'a greffer autour :)
En tout cas ça l'air de bien marcher mais j'ai une question si la machine mets un peu de temps a repondre au ping ca pose un probleme ?
 
 :hello:  

Reply

Marsh Posté le 26-06-2007 à 18:42:52    

ça dépend si tu atteinds le timeout du ping :o
 
sinon en mettant -c 2 par exemple, même si le premier essai atteind le timeout et que le deuxième ne l'atteind pas, ça renvoit quoi comme code de retour?


Message édité par nayfe le 26-06-2007 à 18:45:34
Reply

Marsh Posté le 26-06-2007 à 18:43:03    

par défaut il y a un timeout de quelques secondes, ca suffit largement. Tu peux le fixer avec l'option  W


Message édité par l0ky le 26-06-2007 à 18:43:12
Reply

Marsh Posté le 26-06-2007 à 18:43:56    

Ok, merci :D

Reply

Marsh Posté le 30-06-2007 à 15:58:07    

Pourquoi tout simplement pas faire un ping broadcast ?  :whistle:

Reply

Marsh Posté le 30-06-2007 à 17:58:35    


Parce que ca répond pas du tout à la question ?


Message édité par l0ky le 30-06-2007 à 17:58:51
Reply

Marsh Posté le 30-06-2007 à 18:21:29    

c'est quoi la commande pour un ping brodcast ?

 

Edit : question conne que je retire :d


Message édité par molmock le 30-06-2007 à 18:23:29
Reply

Marsh Posté le 30-06-2007 à 19:31:27    

l0ky a écrit :

Parce que ca répond pas du tout à la question ?


 
bah il veut ping des adresses ip et passer a la suivante si ca repond ou pas , un ping broadcast donnera les memes resultat , apres selon la reponse ou pas il execute une commande

Reply

Marsh Posté le 01-07-2007 à 10:36:48    

1. Certains équipements sont configurés pour ne pas répondre au ping broadcast alors qu'ils répondent parfaitement au ping unicast.
2. Si il existe un routeur entre toi et tes équipements sous test, ton ping broadcast marchera autant qu'un pingouin dans le sahara en plein été.


Message édité par l0ky le 01-07-2007 à 10:39:32
Reply

Marsh Posté le 01-07-2007 à 15:47:57    

En fait j'aimerai aovir la syntaxe correct pour bash car je suis encore debutant :s
 
j'avais penser a faire un truc comme ca sans connaitre la quel syntaxe je dois ecrire :


a=10
b=50
for i de 192.168.0.$a à 192.168.0.$b
 if ping -c 1 192.168.0.$a > /dev/null ; then
   echo "le ping repond, ping sur IP suivante"
 else
   J'execute mes scripts.



Message édité par Ming75 le 01-07-2007 à 15:48:14
Reply

Marsh Posté le 01-07-2007 à 16:07:47    

bon je vais transférer dans programmation là [:cerveau o]


---------------
Intermittent du GNU
Reply

Marsh Posté le 01-07-2007 à 17:30:55    

#!/bin/bash
 
ips="192.168.0.1 192.168.0.101 192.168.0.102"
 
for i in $ips
do
        if ping -c 1 $i > /dev/null ; then
                echo "$i : Success"
        else
                echo "$i : Failed"
        fi
done

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed