Bonjour,
J’ai une commande (en fait c’est un check de Nagios) qui me renvoie un résultat sous cette forme
$ ./check_dns -H dns.entreprise.com
DNS OK: 0,004 seconds response time. dns.entreprise.com returns 96.10.3.24,96.10.3.20|time=0,003836s;;;0,000000
$
Et moi, j’aurais besoin de couper le résultat pour que j’obtienne
$ ./check_dns -H dns.entreprise.com | {commande pour découper le résultat}
0,003836
$
Je pense que c’est faisable à l’aide de la commande sed, mais je galère pour trouver son fonctionnement
Quelqu’un saurait-il me guider ?
Merci beaucoup
la commande cut ? comment faire ?
j’ai reussi à supprimer tout le début avec awk, je me retrouve avec un résultat de ce type
0,003836s;;;0,000000
Bon, pour le moment, j’ai réussi en bidouillant
$ ./check_dns -H dns.entreprise.com | awk 'BEGIN{FS="="} {print $2}' | cut -c-8 | sed s/,/./
0.003836
$
Ca fonctionne, mais c’est pas un peu lourd comme méthode ?
xiloa
Juin 5, 2008, 4:20
5
Disons que la sortie de ton script est assez difficile à exploiter. un serie de données séparées par un espace ou un tab aurait dejà été plus simple.- quitte a mettre sur deux lignes, une ligne « tete de tableau » et une ligne donnees de sorties. Moi, j’aurai fait comme ça.
Edité le 05/06/2008 à 16:21
#/usr/bin/python
import sys
for string in sys.stdin:
a, b = string.split("|")
c,d = b.split("s")
a, resultat = c.split("=")
print resultat
plus rapide :
#/usr/bin/python
import sys
for string in sys.stdin:
debut = string.find("=")
fin = string.rfind("s")
print string[debut+1:fin]
Edité le 05/06/2008 à 16:41
(Oui je sais, python par rapport à awk, on change de catégorie ... )
xiloa:
Disons que la sortie de ton script est assez difficile à exploiter. un serie de données séparées par un espace ou un tab aurait dejà été plus simple.- quitte a mettre sur deux lignes, une ligne « tete de tableau » et une ligne donnees de sorties. Moi, j’aurai fait comme ça.
Malheureusement, la sortie du script… je ne peux la modifier, c’est un fichier compilé
v_atekor:
#/usr/bin/python
import sys
for string in sys.stdin:
a, b = string.split("|")
c,d = b.split("s")
a, resultat = c.split("=")
print resultat
plus rapide :
#/usr/bin/python
import sys
for string in sys.stdin:
debut = string.find("=")
fin = string.rfind("s")
print string[debut+1:fin]
(Oui je sais, python par rapport à awk, on change de catégorie ... )
Merci