Как извлечь имя хоста из Ansible Playbook Run

Как извлечь имя хоста из Ansible Playbook Run

Мне нужно выполнить следующий скрипт оболочки. Я пытаюсь извлечь HOSTNAME после того, как он успешно запустится через Ansible Playbook Run.

У меня есть текстовый файл, содержащий команду запуска Ansible-Playbook, которую нужно выполнить и записать вывод в файл журнала: result.log

Вот как выглядит файл "result.log"

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

Если failed равно "0", Unreachable равно "0" и Changed больше 0, то вывести только HOSTNAME. В этом случае TESTLINUX01

Спасибо за помощь.

решение1

Вы можете использовать что-то вроде этого:

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

Сначала мы извлекаем все необходимые значения, затем сравниваем их с желаемыми вами, и если они совпадают, то выводим имя хоста.

  • grep -Po "changed=\K\d+возвращает число перед «измененным»
  • Оператор ЕСЛИ:
    • $changed -ge 1если изменено больше, чем равно "1"
    • -aи
    • $unreachable -eq 0недостижимый был равен "0"
    • -aи
    • $failed -eq 0failed был равен «0», тогда:
  • cut -s -f1 -d: $file | tr -s ' 'печатает имя хоста

решение2

Спасибо всем за ответ и решение. Следующий код работает для меня:

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"

Связанный контент