2014-02-11 94 views
2

我的任務是在Linux機器上使用ping和grep工具的組合來生成網絡中生存的ip地址列表,我只想顯示那些是生活。這是到目前爲止我的代碼:在Linux中列出網絡中的所有活動IP地址

#!/bin/sh 

COUNTER=1 

while [ $COUNTER -lt 254 ] 
do 
    ping 10.1.0.$COUNTER -c 1 
    COUNTER=$(($COUNTER + 1)) 
done 
+1

聽起來像是你試圖做一個學校項目,他不幫助人們做他們的學校工作:( 你缺少檢查ping是否成功和存儲/輸出列表 – TheOneWhoPrograms

+0

測試'ping'的退出狀態,因此你可以只顯示活的。 – Barmar

回答

2

我建議你使用NMAP:

nmap -sP 10.1.0.* 

給你所有IP的網絡。

更新

如果你必須使用grep和表:

nano liveAddress.sh 

履行與代碼:

#!/bin/sh 

COUNTER=1 

while [ $COUNTER -lt 254 ] 
do 
    ping -c 1 10.1.0.$COUNTER | grep PING | awk '{print $2}' 
    COUNTER=$(($COUNTER + 1)) 
done 

保存(Ctrl + O)和出口(CTRL + X)。

chmod +x liveAddress.sh 
./liveAddress.sh 

這給你機器的ungly IP聯網聯網。

+1

但OP說他必須使用ping和grep。 – Carlo

+0

有沒有問題!所以我「建議」使用nmap! (: –

0

首先,添加1秒的極限平

#!/bin/sh 

COUNTER=1 

while [ $COUNTER -lt 254 ] 
do 
    ping -w1 10.1.0.$COUNTER -c 1 
    COUNTER=$(($COUNTER + 1)) 
done 

名腳本s.sh,然後

. s.sh | grep '1 received' -B1 | awk {'print $2'} 

最後,刪除這個腳本和使用NMAP; )

0

爲什麼你需要使用grep? 只是有點改變了代碼可以找到所有活着的IPS:

#!/bin/bash 

COUNTER=1 

while [ $COUNTER -lt 254 ] 
do 
    ping -w1 10.1.0.$COUNTER -c 1 
    if [ $? -eq 0 ];then 
     echo "10.1.0.$COUNTER" 
    fi 
    COUNTER=$(($COUNTER + 1)) 
done 
0

對於不想NMAP安裝一個簡單的bash腳本誰的用戶。您可以將任何C-Class網絡設置爲參數。

#!/bin/bash 
#set -x 
net=$1 
typeset -i i 

for ((i = 1 ; i<255 ; i++)) ; 
    do 
      ip=$net.$i 
      ping -c 1 -W1 $ip >/dev/null 
      if [ $? == '0' ] 
        then 
        echo $ip exists 
      fi 
    done 

另存爲broadcast.sh並設置權限

chmod +755 broadcast.sh 

開始

./broadcast.sh 192.168.200 

輸出

192.168.200.1 exists 
192.168.200.3 exists