2017-05-30 1 views
-4

In Linux Shell, wie Regex zu verwenden, um die Ausgabe von anderen Befehl zu filtern. wie in Cisco-Geräten verwenden wir sh ver | b Schnittstelle, die nur Informationen über int anzeigt. Meine Anforderung ist die Filterausgabe des unteren Befehls zur Anzeige von "Dogstatsd (v 5.12.0)" und Statusdatum & Zeit.In Linux Shell, wie Regex verwenden, um die Ausgabe anderer Befehle zu filtern.

So dass ich diese o/p mit bestimmten Kriterien verwenden kann, um ein Skript zu schreiben, um den Agenten automatisch neu zu starten.

root @ adcd: ~ # Service datadog-Agent Info -v

Collector (v 5.12.0)

Status Datum: 2017.05.30 08.20.13 (17s vor) Pid: 7864 Plattform: Linux-3.11.0-24-Generic-x86_64-mit-Ubuntu-13.10-Saucy Python-Version: 2.7.13, 64bit Protokolle:, /var/log/datadog/collector.log, Syslog :/dev/log

Uhren ======

NTP-Offset: System-UTC-Zeit 0,018 s: 2017.05.30 06: 20: 31,535928

Paths =====

conf.d:/etc/dd-agent/Conf. d checks.d: /opt/datadog-agent/agent/checks.d

Host-Namen =========

socket-Host-Name: adcd Host-Name: adcd buchsen fqdn : adcd

Checks ======

Apache (5.0) --------------- - Beispiel # 0 [OK] - Gesammelte 12 Metriken, 0 Veranstaltungen & 1 Service-Check

Netzwerk (5.0) ---------------- - Beispiel # 0 [OK] - Gesammelte 16 Metriken, 0 Veranstaltungen & 0 Service-Prüfungen

Verzeichnis (5.0) ------------------ - Beispiel # 0 [OK] - Gesammelte 17 Metriken, 0 Veranstaltungen & 0 Service-Prüfungen

ntp (5,0) --- --------- - Gesammelte 0 Messwerte, 0 Ereignisse & 0 Serviceüberprüfungen

Diskette (5.0) ------------- - Beispiel # 0 [OK] - Gesammelte 24 Metriken, 0 Veranstaltungen & 0 Service-Prüfungen

Emitters ========

  • http_emitter [OK]

====================

Dogstatsd (v 5.12.0)

Status: 2017-05-30 08:20:24 (7s zuvor) Pid: 7859 Plattform: Linux-3.11.0-24-generic-x86_64-mit-Ubuntu-13.10-saucy Python Version: 2.7 .13, 64bit Logs:, /var/log/datadog/dogstatsd.log, syslog:/dev/log

Flush Zahl: 583.466 Paketzählwert: 333.155 Paketen pro Sekunde: 0.0 metrische Nummer: 1 Ereigniszähler: 0 Service-Check Zahl: 1

====================

Forwarder (v 5.12.0)

Status Datum: 2017.05.30 08.20.29 (2s vor) Pid: 8868 Plattform: Linux-3.11.0-24-generic-x86_64-mit -Ubuntu-13.10-frechen Python Version: 2.7.13, 64-Bit- Protokolle:, /var/log/datadog/forwarder.log, syslog:/dev/log

Queue Größe: 422 Bytes Queue Length: 1 Flush Anzahl: 1102592 Eingereichte Transaktionen: 879956 Transaktionen gelöscht: 879955 Transaktionen abgelehnt: 0 API Key Status: API K ey gilt

======================

Trace-Agent (v 5.12.0)

nicht läuft (Port 8126

)

root @ adcd: ~ #

Antwort

0

ich bin mit dem Programm nicht vertraut, aber ich habe vor ein Problem wie dieses zu lösen hatte. Ich nehme an, dass Sie die gewünschte Ausgabe immer mit einer Zeile 'Dogstatsd' starten und immer mit mehreren Gleichheitszeichen enden. Auf dieser Basis könnten Sie Skript aus Ihrer Ausgabe wie folgt aus:

#!/bin/bash 

service datadog-agent info -v > /tmp/DogstatsDump.txt 

LinesTotal=$(cat /tmp/DogstatsDump.txt | wc -l) 

StartOfOutput=$(grep /tmp/DogstatsDump.txt -ne '^Dogstatsd (v' | cut -d':' -f 1) 

LengthOfOutput=$(tail -n $(echo "$LinesTotal - $StartOfOutput + 1" | bc)/tmp/DogstatsDump.txt | grep -ne '^==========' | head -n 1 | cut -d':' -f 1) 

tail -n $(echo "$LinesTotal - $StartOfOutput + 1" | bc) /tmp/DogstatsDump.txt | head -n $(echo "$LengthOfOutput + 1" | bc) 

rm /tmp/DogstatsDump.txt 

Wir bekommen die Werte, die Länge der Datei definiert, wobei die Länge, bis wir die erste Zeile treffen Sie wollen, um die Länge, wo die Ausgangsenden und entsprechend zuschneiden.

Verwandte Themen