saída de 2 posições do mesmo arquivo para o script e, em seguida, eco

0

Eu tenho um arquivo que se parece com isso:

Sender Bob IP 10.1.1.1
Sender Alex IP 10.1.1.2
Sender Jim IP 10.1.1.3

10 linhas como esta no mesmo formato. Eu preciso ecoar o nome e o IP. Enquanto iterando através do meu loop de IPs, porque eu sou o ping testando cada IP.

Até agora, consegui fazer isso:

THEIP=$(cat /tmp/files/extract.txt | awk '{print $4}')
THEID=$(cat /tmp/files/extract.txt | awk '{print $2}')
extract='/tmp/files/Extracted.txt'
for i in $THEIP;
do
        echo "[INFO:]Pinging IP: $i"
        check=$(ping -w 1 $i)
                if [ $? != 0 ] ; then
                echo "[WARN:] **//sender\** is offline"
                else
                echo "[INFO:] $i Pingable!"
                fi
done

Isso só é capaz de chegar ao ping, mas não estou conseguindo imprimir o remetente correlacionado ao IP. Sei que estou ignorando completamente $THEID , porque não consegui descobrir como implementá-lo.

Aninhado para loop - ele imprime IP1 + todos os remetentes, depois IP2 + todos os remetentes que invalidam meu propósito.

Meu eco deve ser:

[INFO:] - Sender Bob from IP 10.1.1.1 is pingable
[INFO:] - Sender Alex from IP 10.1.1.2 is pingable

e assim por diante.

    
por dtuaev25 10.11.2018 / 19:27

1 resposta

1

O que você quer alcançar exatamente não está claro, mas algo assim pode funcionar:

Edit1: melhorado graças ao comentário de Glenn

Edit2: completou o código dentro do loop

input="/tmp/files/extract.txt"
while read _ id _ ip; do # iterate over the lines
  echo -n "Pinging $id @ ip $ip... "
  if ping -w 1 $ip 2>&1 >/dev/null; then 
    echo OK
  else
    echo NOPE
  fi
done < "$input"

(versão somente bash, o awk pode ser mais eficiente, mas não estou familiarizado com ele)

    
por 10.11.2018 / 19:41