web-dev-qa-db-fra.com

Comment extraire le nom d'hôte de Ansible Playbook Run

Je dois accomplir le script suivant. J'essaie d'extraire le nom d'hôte après son exécution avec succès via Ansible Playbook Run.

J'ai un fichier texte qui contient la commande d'exécution Ansible-Playbook à exécuter et écrit le résultat dans le fichier journal: result.log

Voici à quoi ressemble le fichier "result.log"

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

Si la valeur de l'échec est "0", Inatteignable est "0" et Changed est supérieur à 0, puis n'imprimez que le HOSTNAME. Dans ce cas, TESTLINUX01

Merci de votre aide.

2
netkool

Vous pouvez utiliser quelque chose comme ça:

#!/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

Nous extrayons d’abord toutes les valeurs nécessaires, puis nous les comparons à vos valeurs souhaitées. Si elles correspondent, nous affichons le nom d’hôte.

  • grep -Po "changed=\K\d+ retourne le nombre devant "changé"
  • Déclaration IF:
    • $changed -ge 1 si modifié est supérieur à "1"
    • -a et
    • $unreachable -eq 0 inaccessible était égal à "0"
    • -a et
    • $failed -eq 0 échec était égal à "0", alors:
  • cut -s -f1 -d: $file | tr -s ' ' imprime le nom d'hôte
1
Ravexina

Merci à tous d'avoir répondu et fourni la solution. Le code suivant me convient:

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"
0
netkool