【问题标题】:ping an ls list of domains in bash在 bash 中 ping 一个 ls 域列表
【发布时间】:2013-01-16 16:49:10
【问题描述】:

我正在输出一个这样的域列表:

lastdomain=`ls -lah /var/www/vhosts | wc -l`
#the variables below will be used later
IP1=`ifconfig | grep "inet addr" | sed '1 ! d' | awk '{print $2;}' | cut -c 6-19`
IP2=`ifconfig | grep "inet addr" | sed '2 ! d' | awk '{print $2;}' | cut -c 6-19`

LIST=`ls -lah /var/www/vhosts | sed "4,$lastdomain ! d" | awk '{print $9;}' | grep -v 'chroot\|default\|.skel'`

我想 ping 每一个。这几乎可以工作:

for each in $LIST
 do
 echo "Attempting to ping $each..."
  ping -c 1 $LIST > /dev/null 2>&1 #&& break
   if [ "$?" -ne "0" ]; then
    echo "Host $each is not reachable! "
     else
    break
   fi
done

但是它们都返回为:

Host exampledomain.com is not reachable!

我做错了什么?

编辑:现在这样可以了,我需要删除以下内容以获取 IP 地址:

PING domain.com (IP.IP.IP.IP) 56(84) bytes of data.
64 bytes from domain.co.uk (IP.IP.IP.IP): icmp_seq=1 ttl=64 time=0.024 ms

--- domain.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.024/0.024/0.024/0.000 ms

【问题讨论】:

    标签: bash list for-loop ping ls


    【解决方案1】:
    ping -c 1 $LIST > /dev/null 2>&1 
    

    你可能是说

    ping -c 1 $each > /dev/null 2>&1
    

    【讨论】:

    • 傻我,这很好用,谢谢。根据需要对 ping 结果进行一些操作添加注释。
    • 弄清楚我能做什么:ping -c 1 $each | sed'1! d' | awk '{打印 $3;}' | cut -c 2-15 差不多了 :)
    • @Zippyduda sed、awk 和 cut 在同一管道中。这看起来很糟糕,你只需要 awk 那里。
    • 我知道您正在讨论 ping 调整。你能建议我应该改用什么吗?至于ifconfig,它在每台机器上的输出都不一样,而且用awk来抓取多个IP地址似乎很难。但我明白你在说什么。执行 awk '{print $2;}' 会导致:addr:X.X.X.X
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2012-12-30
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多