如何在 shell 脚本中确定远程主机的 IP?

如何在 shell 脚本中确定远程主机的 IP?

我有一个 IP 别名,可根据主机的可用性在两个主机之间切换。(这是一个非常大的网络,切换是在本地控制之外完成的。)我需要确定别名何时切换主机,我可以通过检测通过返回的 IP 地址ping并保持其状态来做到这一点。

我如何解析输出以ping仅检索 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

答案1

一种可能性是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

答案2

另一种可能性是同时使用grepsed

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

此变体仅解析第一bytes from行括号内的内容。

相关内容