Como extrair o nome do host do Ansible Playbook Run [closed]

2

Eu preciso realizar o seguinte script de shell. Eu estou tentando extrair o HOSTNAME depois que ele é executado com sucesso via Ansible Playbook Run.

Eu tenho um arquivo de texto que contém o comando Ansible-Playbook para ser executado e gravar a saída no arquivo de log: result.log

Aqui está o que o arquivo "result.log" se parece com

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

Se a falha for "0", Unreachable é "0" e Changed é maior que 0, depois imprime apenas o HOSTNAME. Nesse caso, TESTLINUX01

Obrigado pela sua ajuda.

    
por netkool 06.06.2017 / 21:26

2 respostas

1

Você pode usar algo assim:

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

Primeiramente nós extraímos todos os valores necessários e os comparamos com os que você deseja, se eles coincidirem, nós imprimimos o nome do host.

  • grep -Po "changed=\K\d+ retorna o número na frente de "alterado"
  • instrução IF:
    • $changed -ge 1 se alterado for maior que igual a "1"
    • -a e
    • $unreachable -eq 0 inacessível foi igual a "0"
    • -a e
    • $failed -eq 0 falhou foi igual a "0", então:
  • cut -s -f1 -d: $file | tr -s ' ' imprime o nome do host
por Ravexina 06.06.2017 / 22:38
0

Obrigado a todos por responderem e fornecerem a solução. O código a seguir funciona para mim:

cat $file
$file >> $LOGFILE

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

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

Unreachable='grep -E "unreachable=1    failed=0" $LOGFILE | awk '{printf "%s ", ;}''
echo "Unreachable: $Unreachable"
    
por netkool 07.06.2017 / 08:42