56

制約:
1. 速度が重要です。
2. ping は 1 回許可されます。

Python を使用するか、シェルスクリプトを使用するかを検討しています。より速い方法はありbashますか?

これが現在のコードです。

for ip in $(seq int1 int2); do
    ping -c 1 xxx.xxx.xxx.$ip | grep "bytes from" &
done

これより速いものはありますか?

4

8 に答える 8

101

NMAP を使用する必要があります。

nmap -T5 -sP 192.168.0.0-255
于 2012-12-26T09:45:02.087 に答える
47

次の (悪意のある) コードは、nmap メソッドの 2 倍以上の速さで実行されます

for i in {1..254} ;do (ping 192.168.1.$i -c 1 -w 5  >/dev/null && echo "192.168.1.$i" &) ;done

標準の nmap では約 10 秒かかります。

nmap -sP 192.168.1.1-254

25秒かかります...

于 2014-02-16T17:20:57.077 に答える
13

ユニークなリストのためにこれを試してください。

ping -c 5 -b 10.10.0.255 | grep 'bytes from' | awk '{ print $4 }' | sort | uniq

別の方法 (ライブ ホストを取得):

fping -ag 192.168.1.0/24

于 2012-12-26T09:49:31.123 に答える
5

これらの両方のコマンドを試して、arp の方が速い理由を自分の目で確かめてください。

ピン:

$(seq 1 254) の ip の場合。ping -c 1 10.185.0.$ip > /dev/null; を実行します。[ $? -eq 0 ] && echo "10.185.0.$ip UP" || : ; 終わり

ARP:

$(seq 1 254) の ip の場合。arp -n 10.185.0.$ip | を実行します。grep アドレス; [ $? -eq 0 ] && echo "10.185.0.$ip UP" || : ; 終わり

于 2016-03-10T20:02:47.190 に答える
0

このスクリプトは、Windows 上の Git Bash (MINGW64) で実行され、ping の結果に応じてメッセージを返します。

#!/bin/bash
#$1 should be something like "19.62.55"

if [ -z "$1" ]
  then
    echo "No identify of the network supplied, i.e. 19.62.55"
else
    ipAddress=$1

    for i in {1..256} ;do 
    (
        {
        ping -w 5 $ipAddress.$i ; 
        result=$(echo $?);
        } &> /dev/null


        if [ $result = 0 ]; then
            echo Successful Ping From : $ipAddress.$i
        else
            echo Failed Ping From : $ipAddress.$i
        fi &);
    done

fi
于 2018-02-02T13:33:58.227 に答える