So extrahieren Sie den Hostnamen aus Ansible Playbook Run

So extrahieren Sie den Hostnamen aus Ansible Playbook Run

Ich muss das folgende Shell-Skript ausführen. Ich versuche, den HOSTNAMEN zu extrahieren, nachdem er erfolgreich über Ansible Playbook Run ausgeführt wurde.

Ich habe eine Textdatei, die den auszuführenden Ansible-Playbook-Ausführungsbefehl enthält und die Ausgabe in die Protokolldatei schreibt: result.log

So sieht die Datei "result.log" aus

PLAY RECAP *********************************************************************
TESTLINUX01                : ok=6   changed=1    unreachable=0    failed=0

Wenn der Fehler "0", "Unerreichbar" "0" und "Geändert" größer als 0 ist, drucken Sie nur den HOSTNAME. In diesem Fall TESTLINUX01

Ich danke Ihnen für Ihre Hilfe.

Antwort1

Sie können so etwas verwenden:

#!/bin/bash

file="result.log"

changed=`grep -Po "changed=\K\d+" $file`
unreachable=`grep -Po "unreachable=\K\d+" $file`
failed=`grep -Po "failed=\K\d+" $file`

if [ $changed -ge 1 -a $unreachable -eq 0 -a $failed -eq 0 ]
 then
  cut -s -f1 -d: $file | tr -s ' '
fi

Zuerst extrahieren wir alle notwendigen Werte und vergleichen sie dann mit den gewünschten Werten. Wenn sie übereinstimmen, drucken wir den Hostnamen aus.

  • grep -Po "changed=\K\d+gibt die Zahl vor "geändert" zurück
  • IF-Anweisung:
    • $changed -ge 1wenn geändert größer als gleich "1" ist
    • -aUnd
    • $unreachable -eq 0unerreichbar war gleich "0"
    • -aUnd
    • $failed -eq 0fehlgeschlagen war gleich "0", Dann:
  • cut -s -f1 -d: $file | tr -s ' 'druckt den Hostnamen

Antwort2

Vielen Dank an alle für die Antworten und die Lösung. Bei mir funktioniert folgender Code:

cat $file
$file >> $LOGFILE

SUCCESS=`grep "unreachable=0    failed=0" $LOGFILE | awk '{printf "%s ", $1;}'`
echo "Success: $SUCCESS"

FAILURE=`grep -E "unreachable=0    failed=[1-9]" $LOGFILE | awk '{printf "%s ", $1;}'`
echo "Failure: $FAILURE"

Unreachable=`grep -E "unreachable=1    failed=0" $LOGFILE | awk '{printf "%s ", $1;}'`
echo "Unreachable: $Unreachable"

verwandte Informationen