2014-09-11 128 views
0

我是Linux新手腳本,所以如果這是一個微不足道的問題,我很抱歉。 我寫了下面的腳本。 該腳本基本上ping 192.168.11.0中的IP地址一次,並在響應成功或不成功時打印。ping命令後1秒延遲

#!/bin/bash 

NETWORK=192.168.11 
IP_START=101 
IP_END=148 

IP_COUNTER=$IP_START 

while [[ $IP_COUNTER -le $IP_END ]] 
    do 
     ip=$NETWORK.$IP_COUNTER 
     ping -c1 $ip &>/dev/null && echo "$ip is UP" || echo "$ip is DOWN" 
     IP_COUNTER=$(($IP_COUNTER +1)) 
    done 

但是我想有平安和「回聲‘$ IP之間有1秒鐘的延遲是UP’......」的一部分。我不知道如何做到這一點。 我真的很感激,如果有人能指引我在正確的方向。

回答

1

使用睡眠。

if ping -c1 $ip &>/dev/null ; then sleep 1 echo $ip is up else sleep 1 echo $ip is down fi

我看着你的代碼,也許更好的匹配您的編碼風格會

ping -c1 $ip &>/dev/null && sleep 1 && echo "$ip is up" || sleep 1 && echo "$ip is down"

「真」 POSIX睡眠只接受整數值(睡眠1,睡2) ,但是linux版本的睡眠也可以處理非積分(sleep 0.25的1/4秒)。

+0

噢,我明白了。這就說得通了。感謝您及時的回覆。感謝幫助。看起來,當ip無法訪問時,回顯需要更長的時間才能在屏幕上打印。你有沒有看到這種情況發生的原因? – SSF 2014-09-11 10:31:50

+0

是的,單位是秒,正如我的答案結束時的說明。 – 2014-09-11 10:32:37

+0

是的,對不起,我後來才注意到它。你知道爲什麼我會花更長的時間來回應無法訪問的IP地址嗎? – SSF 2014-09-11 10:36:41