j'avais deja créer un sujet sur un petit soucis que j'avais eu pour tester mon systeme via des commande unix:
https://www.jeuxvideo.com/forums/1-47-61617-1-0-1-0-petite-question-unix.htm
(Pour rappel je testeais la mémoire libre et je voulais envoyer une alerte systeme au cas ou je tombait en dessous des 20%).
J'ai une autre question plutot bete à demander a la communauté programmeur de ce site
:
Je cherche a créer une alerte qui servira à mesurer la qualité de réponse du réseau (le PING):
je souhaite surveiller plusieurs adresse IP composant mon réseau et à prendre le ping le plus elever ( donc il faudra les comparer et c'est la ou le bas blaisse car je ne sais pas comparer plusieur ping une fois obtenu les ping)
Je ne sais pas si tout est claire, mais au cas ou je reste là pour re expliquer au cas ou ![]()
j'utilise la commande:
ping -c 2 172.32.0.11 ( exemple d'adresse IP au hasard)
Cela me donne 2 ping different pour l'adresse 2 172.32.0.11.
Je souhaiterais faire une valeur moyenne des deux ping et ensuite pour d'autresse adreesse IP je souhaiterais faire la meme chose et comparer lequel aura la valeur moyenne la plus longue pour faire une alerte dans un fichier xml (je sais pas si c'est plus claire commme ça
)
heu pour l'adresse 172.32.0.11 ( désoler)...
Je continue un peut jusqu'a ce que quelqu'un arrive et me libere un peut de son savoir
j'ai pensé à stoker le ping dans une variable quelquonc mais lorsque je fais :
ping_test= ping -c 1 172.32.0.11 je n'ai pas de message d'erreur mais lorsque je souhaite l'afficher pour voir si la commande a bien fonctionner via la commande :
echo $ping_test , cela me renvoie rien, ce qui veux dire que je n'ai pas réussi à transferer la valeur du ping dans la variable et je ne comprend pas ![]()
je viens de resoudre le petit probleme , il faut que je tape la commande:
ping_test=$(ping -c 1 172.32.0.11)
et aprés en faisant echo $ping_test il me donne :
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data. 64 bytes from 172.16.0.1: icm
p_seq=1 ttl=64 time=0.275 ms --- 172.16.0.1 ping statistics --- 1 packets transm
itted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.275/0.275/0
.275/0.000 ms
Mais dans tout ça, seul la valeur 0.275 ms m'interesse , il faut surement essayer de la recuperer via la commande awk mais j'aimerais bien un peut d'aide
Je sais , c'est bizzard, je pose mes questions et y répond moi même à chaque fois mais c'est normal je cherche à avancer et si quelqu'un peut m'aider, ça serait parfait car je ne suis pas un spécialiste (loins de la
) et bon je galere comme vous pouvez le voir ( si quelqu'un me lit bien sur
)
"il faut surement essayer de la recuperer via la commande awk"
awk, c'est vraiment inutilisatable...
ping -c 1 fr.wikipedia.org | sed -e '/^rtt / !d' -e 's/.*=\([^\/]*\)\/.*/\1 ms/'
PS: un peu de doc (en anglais, hélas) sur sed = http://www.grymoire.com/Unix/Sed.html
Le début (jusqu'au transformations avec y) est particulièrement utile.
merci chris mais en faite je suis entrain de faire un tp et tu connais les assistants de TP, il veulent à tout prix que tu utilise leur méthode pour coder et en faite ce tp à pour but de nous familiarisé avec la commande awk.
J'ai pensé à utiliser:
awk -F "/" `{print $4}`ping test
vue que je vais prendre le valeur moyenne du ping et qu'elle se trouve aprés le 4eme / , seulement voila il me semble qu'il faut que ce soit dans un fichier et non une variable donc il va falloir que je transfert le text dans un fichier .txt je pense
Est ce que cela vous semble etre la bonne méthode et oui je confime, la commande awk est vraiment une horreur à utiliser ![]()
bon sinon j'isole juste ma derniere ligne et avec la fonction cut je recupere tous ce que j'ai besoin:
(autre façons de faire qui peut marcher à mon avis
)
ce tp à pour but de nous familiarisé avec la commande awk. »
mauvais TP, changer TP.
Vraiment, ça fait maintenant plus de 8 ans que je suis sous linux... et je n'ai JAMAIS vraiment eu besoin de awk. Par contre, sed je m'en sers plusieurs fois par jour. Et très honnêtement, sed et awk, c'est le jour et la nuit quoi.
Anyway, avec un ping -c 1, ta valeur moyenne sera égale aux valeurs min et max. Et c'est sans doute plus simple de récupérer le min (c'est d'ailleurs ce que je fais en sed°.
Je finirai par réagir sur ça : « il me semble qu'il faut que ce soit dans un fichier et non une variable donc il va falloir que je transfert le text dans un fichier .txt je pense »
si tu as le niveau pour dire une chose pareille, tu es 1000 ans trop jeune pour utiliser awk. :/
Heu.. C'esr pas vraiment une question mais voila je suis sur ca depuis 9h du matin et je demande de l'aide, pas de moquuerie please ![]()
C'est pas une moquerie, juste un constat. Si tu ne sais pas te servir d'un tube, tu n'as pas du tout le niveau pour te servir de awk. ![]()
Je suis la pour apprendre justement ...
Etrangement, je me sers plus d'awk que de sed...
awk est tres pratique pour faire des operations de type "excel" sur un jeu de donne dans un ficheir (par exemple au format csv). Je me sert tout le tmeps pour calculer des moyennes, ecart types. Des sommes de prefix, des histogrammes, des fonctions de densite (experimentale)...
je me suis finalement servis de sed comme Chris_27 me l'a conseiller et pour l'instant cela semble bien fonctionner.
J'aurais surement quelques petites questions supplémentaire mais pour l'instant ça semble rouler.
Je laisse le topic ouvert si j'ai d'autre question ou alors je crerais un autre topic mais en tout cas merci à la communauté qui m'aide vraiment dans ma petite misere de programmation ![]()
j'ai un petit soucis concernant (encore
)
J'ai un fichier ou ce situe les adresses IP que je veux recuperer mais celui ci est proteger donc je ne peut pas le copier mais juste y acceder via nano et je n'ai pas tester si je pouvais y avoir accés mais bon pour l'instant j'ai juste copier/coller ce qu'il y avais dedant dans un fichier IP.txt pour y avoir accés normalement: et il ressemble à ceci:
localhost
127.0.0.1 localhost.localdomain localhost lux lux.esme.fr
::1 localhost6.localdomain6 localhost6
172.18.0.7 ohm.xor.fr
172.18.0.8 volt.xor.fr
172.18.0.3 joule.xor.fr
127.0.0.1 localhost.localdomain
172.18.0.12 flops.xor.fr
donc vouila je veux prendre les adresses IP
j'ai fait une commande tel quel
:
IP1=$(cat /home/students/eleveX/IP.txt | grep -e "ohm" | cut -c 1-10)
echo "$IP1"
et dans IP1 ça m'affiche bien 172.18.0.7 (oh yea
)
J'ai un peut tricher en comptant le nombre de caractere pour chaque adresse IP mais bon passons
Je souhaiterais maintenant pouvoir travailler sur cette adresse IP en faisant juste un:
ping -c 2 $IP1
c'est a dire regarder par deux fois la valeur du ping de l'IP contenue dans la variable IP1 mais cela ne semble pas marcher et je ne comprend pas pourquoi
Quelqu'un pourrait il m'aider? ![]()
Merci d'avance.
j'ai un peut progresser en UNIX depuis mes dernieres questions mais la je bloque sur ça et ça m'embete un peut j'avoue ^^
je viens de trouver mon probleme, il suffisait de faire:
ping -c2 -n $IP1
j'ai une autre question qui peut parratire toute bete, comment faire des soustractions de deux variables en unix:
j'ai reussit à prendre le ping max et le ping min, j'ai pour l'instant:
- ping_min = 0.215
-ping_max = 0.193
Or quand je veux faire la difference entre la variable ping_max et ping_min en faisant:
diff=$(($ping_max - $ping_min))
ça me sort
-bash: 1.464 - 0.193: syntax error: invalid arithmetic operator (error token is
".464 - 0.193")
Il faut savoir que les valeur 1.464 et 0.193 ont été prise directement dans un fichier donc ils sont peut etre en chaine de caractere et c'est peut etre là qu'il ya une erreure mais je n'en suis pas vraiment sur
Quelqu'un serait si c'est la bonne méthode pour faire une soustraction de deux variables dans un premier temsp? ![]()
heu dans ma question; j'ai :
- ping_min = 0.193
-ping_max = 1.464
desoler j'avais mal écris ^^