Linux shell (sh) CLI 测试是否 ping 成功

Linux shell (sh) CLI test if ping successful

如何连接 linux shell (sh) 脚本以使用 ping 测试主机是否可达? 我想可能有使用 grep 的解决方案,但也许 ping 本身提供了该选项?

我更喜欢将到达主机的成功 ping 操作列入白名单,然后检查是否有任何错误。我不关心 ping 没有成功到达主机的原因。

我想限制 ping 尝试次数和到达主机的最长时间,这样脚本就不会等待 ping 尝试到达主机太久。

dt=$(date +%d)

cksize=50

echo "Start $(date)"

while IFS= read -r sn    
do

  echo "*************************************************"
  echo "Begin checking NODES client: $sn"

  if ping -c 1 "$sn" -i 5 > /dev/null
  then  
    echo "$sn   node up"
  else
    echo "$sn   node down"
  fi 
done < server_list

你可以这样做。它将对所有主机并行执行。

#!/bin/bash

for server in 'google.com' 'github.com' 'fakeserver.com'
do
    { ping -o "$server" &>/dev/null && echo "$server is UP"  || echo "$server is DOWN" ; } &
done
wait

此致!

parallel -j0 --timeout 15 'ping -c 5 -i 0.2 {} >/dev/null 2>&1 && echo {} up || echo {} down' ::: freenetproject.org debian.org no-such.domain {1..254}.2.3.4