Script de ping

Script de ping - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-12-2006 à 12:09:57    

Gros débutant sous Linux, je suis en train de découvir les joies de Linux et plus précisement de Debian.
Pour mettre le pied à l'etrier, je souhaite réaliser un script mais je n'ai aucune idée sur la façon de procéder:
 
1ère étape:
J'ai un fichier texte (IP.txt) avec une liste d'IP publiques (séparées par un retour chariot) que je souhaite pinguer pendant 1 Minute toutes les heures sur une semaine et récupérer les temps de réponse dans un fichier texte (avec les heures d'execution)
 
2ème étape:
j'ai 3 fichiers, dont 2 fichiers texte, l'un contenant les IP (IP.txt), l'autre contenant des mots de passe (MDP.txt) et je souhaite uploader puis downloader le 3ème fichier (test.tar.gz) en SCP sur les machines qui sont dans IP.txt en utilisant un login toujours identique (ex.: test) et les mots de passe associés dans le fichier MDP.txt (séparées par un retour chariot). Le but est de récupérer les temps d'upload/download dans un fichier texte avec les heures d'execution.
 
J'imagine que ce genre de scripts permettant de qualifier un accès Internet distant doit exister, mais je n'ai pas trouvé grand chose...
Merci d'avance pour votre aide  :jap:  
 
 

Reply

Marsh Posté le 20-12-2006 à 12:09:57   

Reply

Marsh Posté le 20-12-2006 à 12:12:54    

renaud-twingo a écrit :

Gros débutant sous Linux, je suis en train de découvir les joies de Linux et plus précisement de Debian.
Pour mettre le pied à l'etrier, je souhaite réaliser un script mais je n'ai aucune idée sur la façon de procéder:

 

1ère étape:
J'ai un fichier texte (IP.txt) avec une liste d'IP publiques (séparées par un retour chariot) que je souhaite pinguer pendant 1 Minute toutes les heures sur une semaine et récupérer les temps de réponse dans un fichier texte (avec les heures d'execution)


Faut demander à cron, c'est son boulot.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 20-12-2006 à 14:35:24    

OK pour le Crontab, mais là ou j'ai plus de mal c'est pour le script...

Reply

Marsh Posté le 20-12-2006 à 15:08:04    

Un script c'est un fichier texte ou tu écris exactement ce que tu taperais dans la console
Les 2 différences :
-ce fichier comment forcément par !#/bin/sh
-ce ficher doit avoir des droits en exécution pour se comporter "comme un programme", sinon ca reste un simple fichier txt. Pour le rendre exécutable, tu tapes dans une console chmod +x monfichier

 

Toutes les heures cron doit lancer un script qui :
-lit ton fichier contenant les ip
-les ping
-écrit les résultats ailleurs

  

Lire le fichier :
cat toto.txt : envoie le contenu du fichier ligne par ligne sur la sortie standard
Donc si tu testes dans une console un truc comme :

for i in `cat toto.txt`
do
echo "------> $i"
done


Tu verras toutes tes lignes précédées de ------>
En effet `cat toto.txt` représente "ce que renvoie" cat toto.txt, donc dans la boucle for la variable $i contient à chaque itération une ligne de toto.txt

 

Variante :

while read i
do
echo "------> $i"
done < toto.txt


Même résultat, read est nourri par le contenu de toto.txt (le < toto.txt dit en gros "cette commande recevra en entrée toto.txt) et $i contient à chaque itération une ligne de toto.txt

  


Pinger l'ip :
Si i contient l'adresse ip, on peut faire

ping "$i"


En rajoutant quelques options parce que sinon de base ping dure indéfiniment

  


Récuperer le résultat de ping :

output=`ping "$i"`


Comme avant, `"$i"`représente "ce que renvoie" ping "$i", on peut le mettre directement dans une variable (note : quand je mets un truc dans une variable je ne mets pas $ devant, d'où mon output=azeazezae ici. Par contre pour consulter le contenu de cette variable on utilise bien $output)

 

Si ce que renvoie ping est trop verbeux et que tu ne veux que le temps en ms, tu peux soit chercher dans le man de ping s'il existerait pas une option qui rend ping moins verbeux, soit filtrer un peu cette sortie pour garder ce que tu veux.
Pour filtrer (plusieurs possibilités) il faut se renseigner sur grep, sed, cut (un peu technique pour débuter)

  


Stocker le résultat :
echo "toto ping en : $variable secondes" >> resultats.txt
écrit toto ping en : 0.323 secondes à la dernière ligne de resultats.txt (si $variable contient 0.323 évidemment).
Donc en répétant l'opération on rajoute toujours à la fin du même fichier.

  

Bon courage  :hello:
PS : et pour obtenir l'heure courante, tu peux utiliser la commande date


Message édité par Xavier_OM le 20-12-2006 à 15:19:18

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 20-12-2006 à 15:57:30    

fping
smokeping

Reply

Marsh Posté le 21-12-2006 à 01:50:13    

Merci pour vos réponses.  :)  
Pour réaliser ce que je veux faire jeme suis tourné vers fping.
Voici la commande que je lance:
fping -C3 -q -f /home/admin/IP.txt >> tdr.txt
Le problème est que cette commande n'ecrit rien dans le fichier text (a cause du commutateur q pour quiet).
Si je vire -q j'ai un fichier de la forme:
 
217.146.186.51 : [1], 84 bytes, 33.2 ms (33.1 avg, 0% loss)
209.85.129.99  : [2], 84 bytes, 22.9 ms (22.8 avg, 33% loss)
 
Par contre, dans tous les cas, à la fin de son execution, fping affiche des stats des temps de réponse sous la forme:
 
209.85.129.99  : 23.54 23.34 23.95 22.87 23.46
217.146.186.51 : 33.20 33.32 33.46 33.08 33.45
 
C'est exactement ce que je veux récuperer, mais impossible...
 
Vous avez une idée  :??:

Reply

Marsh Posté le 21-12-2006 à 11:55:20    

si c'est affiché, c'est bien que tu l'as récupéré ...

Reply

Marsh Posté le 21-12-2006 à 12:02:32    

Ben non, essai de recuperer dans un fichier text le retour de la commande suivante:
fping -C3 -q www.google.fr
Et tu sera surpris du résultat!  :pt1cable:

Message cité 1 fois
Message édité par renaud-twingo le 21-12-2006 à 12:03:03
Reply

Marsh Posté le 21-12-2006 à 14:00:29    

renaud-twingo a écrit :

Ben non, essai de recuperer dans un fichier text le retour de la commande suivante:
fping -C3 -q www.google.fr
Et tu sera surpris du résultat!  :pt1cable:

 

Un programme peut avoir 2 output :
- la sortie standard (stdout) où on met les messages
- l'erreur standard (stderr) où on met les erreurs
De base tout finit sur la console (en général il faut pouvoir tout lire, messages et erreurs).

 

La redirection > envoie la sortie standard (stdout) dans un fichier, mais uniquement la sortie standard.
Exemple :

ls un_fichier_qui_n'existe_pas > toto.txt

     
Tu vois que le message d'erreur s'affiche quand même

  

Si tu veux récupérer l'erreur standard, tu peux faire

ls un_fichier_qui_n'existe_pas 2> toto.txt


2> redirige le flot numéro 2 (stderr, l'erreur standard)

 


 :hello:


Message édité par Xavier_OM le 21-12-2006 à 14:01:21

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 23-12-2006 à 21:47:28    

Ca marche!
Merci beaucoup Xavier_OM, je ne connaissais pas cette subtilité (novice que je suis)...
 :jap:


Message édité par renaud-twingo le 23-12-2006 à 21:47:51
Reply

Sujets relatifs:

Leave a Replay

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