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