Como posso determinar o IP de um host remoto em um script de shell?

0

Eu tenho um alias de IP que alterna entre dois hosts, dependendo da disponibilidade do host. (Essa é uma rede muito grande e a comutação é feita externamente do controle local.) Preciso determinar quando o alias mudou os hosts, e posso fazer isso detectando o endereço IP retornado por ping e mantendo-o no estado.

Como posso analisar a saída de ping para recuperar apenas o endereço IP?

$ ping -c 1 -w 1 somehost
PING somehost (1.2.3.4) 56(84) bytes of data.
64 bytes from somehost (1.2.3.4): icmp_seq=1 ttl=64 time=1.35 ms

--- somehost ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 1.354/1.354/1.354/0.000 ms
    
por Sean Allred 13.01.2015 / 17:58

2 respostas

0

Uma possibilidade é com grep :

$ ping -c 1 -w 1 somehost \
    | grep -oP "bytes from [A-Za-z\.]+ (\(\d+\.\d+\.\d+\.\d+\))" \
    | grep -oP "\d+\.\d+\.\d+\.\d+"
1.2.3.4
    
por 13.01.2015 / 18:02
0

Outra possibilidade é com grep e sed :

$ ping -c 1 -w 1 somehost \
  | grep "bytes from" \
  | sed 's/^.*(\(.*\)).*$//'
1.2.3.4

Esta variante apenas analisa o que está entre parênteses na primeira linha bytes from .

    
por 13.01.2015 / 18:09