Bem, você já tem o endereço IP; então você pode usá-lo:
for host in 1.5.4.7 1.5.3.9; do
ssh core@$host "sudo grep -A 2 hi /home/abc.txt" && \
printf "%s\n" "$host"
done
A execução de hostname
, como se você estivesse no código de exemplo em sua pergunta, produzirá o hostname , não o endereço IP que você disse querer.
Usar &&
para separar comandos só executará o comando subseqüente se (e somente se) o código de saída do comando pré-definido for zero; se grep
não encontrar correspondências, não retornará um zero e o segundo comando não será executado.
Além disso, apesar de não saber muito sobre seu caso de uso específico, geralmente acho mais fácil executar coisas assim para mostrar o host antes da saída do que deve ser executado no host em vez do que após , mas isso é tão simples quanto mover a instrução printf
(ou, se preferir, você pode usar echo "$host"
em seu lugar).