私の仕事にはたくさんのコンピューターがあり、冗談を言いたいです。ネットワーク経由でコンピューターを閉じることはできますが、IPアドレスを見つけるのは困難です。
192.168.1.aaから192.168.1.zzまでのすべてのオンラインIPアドレスを簡単に見つけるにはどうすればよいですか?
私の仕事にはたくさんのコンピューターがあり、冗談を言いたいです。ネットワーク経由でコンピューターを閉じることはできますが、IPアドレスを見つけるのは困難です。
192.168.1.aaから192.168.1.zzまでのすべてのオンラインIPアドレスを簡単に見つけるにはどうすればよいですか?
回答:
一般的に、nmap
ネットワークをすばやくスキャンするには非常に便利です。
nmapをインストールするには、ターミナルで次のコマンドを入力します。
sudo apt-get install nmap
アプリケーションがインストールされたら、次のコマンドを入力します。
nmap -sn 192.168.1.0/24
これにより、192.168.1.0と192.168.1.255の間のネットワーク上のping要求に応答したホストが表示されます。
Nmapの古いバージョンでは、次を使用します-sP
。
nmap -sP 192.168.1.0/24
その他の参照については、次のページを参照してください。
学ぶのに非常に便利なツールです。
ネットワーク内のすべてのコンピューターがUbuntuまたはavahi-daemon
(DNS-SD)を使用する他のディストリビューションである場合、以下を実行することにより、それらの詳細なリスト(ホスト名とIPアドレス)を取得できます。
avahi-browse -rt _workstation._tcp
ネットワークで使用されているすべてのIPアドレスを知りたい場合は、次を使用できますarp-scan
。
sudo arp-scan 192.168.1.0/24
デフォルトではインストールされないため、でインストールする必要がありsudo apt-get install arp-scan
ます。arp-scan
ARPパケットをローカルネットワークに送信し、受信した応答を表示します。これにより、ファイアウォールで保護されたホスト(IPパケットに基づいてトラフィックをブロックするホスト)も表示されます。
arp-scan
ワイヤレスネットワークに関連付けられているすべてのデバイスが見つかりません。現在、たとえば、sudo arp-scan 192.168.2.0/24
2つの結果(.1および.1)が nmap -sn 192.168.2.0/24
表示され、4つの結果(.1、.2、.3および.4)が表示されています。そのため、nmap
より正確であると思われます(ネットワークに4つのデバイスが接続されていることは確かです)。どうしてこれなの?
nmap
です。
arp-scan
いいです !
読者への注意:元の回答は、しばらく前と、シェルスクリプトのみを学習していたときに投稿されました。より高速に実行される新しい改良されたスクリプトについては、以下の再訪バージョンをご覧ください。
nmap
私の一番の選択ですが、もしあなたがそれを持っていない場合はどうでしょうか?DIYの方法は、pingスクリプトを使用して、ネットワーク上の各IPアドレスを手動で通過させることです。ここにあるのは、アドレスの最後の番号を設定し、アドレスにサイレントpingを1回行い、コマンドが成功するかどうかを確認する(そして、成功した場合、ホストは明らかにアップしている)while printf
ステートメントであるwhileループです。早くて汚い方法で、それを書くのに約10分かかりましたが、実行時間は少し遅いかもしれません。
#!/bin/sh
# set -x
NUM=1
while [ $NUM -lt 256 ];do
ping -q -c 1 192.168.0.$NUM > /dev/null
RESULT=$(echo $?)
if [ $RESULT -eq 0 ]; then
printf 192.168.0.$NUM"\n"
fi
NUM=$(expr $NUM + 1)
done
最初にこの回答を2015年8月に投稿しました。それ以来、シェルスクリプトについてもう少し学んだので、このスクリプトを見た後、この回答を再確認していくつかの改善を加えることをお勧めします。ここにいくつかのアイデアがあります:
スクリプトは明らかに遅くping
、ホストからの応答を待ちます。デフォルトでは、ping
あなたのネットワークであり、そして限り、私は理解してTCPプロトコルは、待ち時間を毎回倍にする方法混雑に応じて変えることができる2 RTTのために(少なくともによると、この)。そのping
ため、-w 1
フラグで強制的にタイムアウトすることができます。256個のアドレスがあり、アドレスごとに1秒と想定しているため、スクリプトは約256/60 = 4.27分かかります。
コマンドを実行してから終了ステータスをキャプチャすること$?
は、実際には必要ありませんでした。if ... then;...fi
直接コマンドを操作することができます。つまり、これを行うだけで十分です。
if ping -w 1 -q -c 1 192.168.0.$NUM > /dev/null ;
then
<some other code here>
fi
printf
コマンドは、そのように書き換えることができます。
printf "IP %s is up\n" 192.168.0."$NUM"
これはスタイル上の変更ですがprintf
、引用"$NUM"
変数を使用することで、他の多くの言語での動作や外観と一貫性があります。ここで引用する必要はありません-数字のみを扱っているため、変数にスペースがあるために単語の分割を予測する必要はありません。
複数のバックグラウンドプロセスを生成すると、パフォーマンスが大幅に向上します。以下のスクリプト編集はまさにそれを行います。ping
and printf
を関数に入れますpingf
(はい、わかりやすい名前です)。またmain
、のループと呼び出しを行う単一の関数もありpingf
ます。
#!/bin/sh
# Uncomment for debugging
#set -x
pingf(){
if ping -w 2 -q -c 1 192.168.0."$1" > /dev/null ;
then
printf "IP %s is up\n" 192.168.0."$1"
fi
}
main(){
NUM=1
while [ $NUM -lt 255 ];do
pingf "$NUM" &
NUM=$(expr "$NUM" + 1)
done
wait
}
main
それはどれくらいうまく機能しますか?悪くない、実際には、数秒かかります。
$ time ./ping_script.sh
IP 192.168.0.1 is up
IP 192.168.0.101 is up
IP 192.168.0.27 is up
IP 192.168.0.29 is up
0m02.50s real 0m00.01s user 0m00.12s system
Netdiscoverがあなたの答えになります。
ターミナル経由でインストールするには:
sudo apt-get install netdiscover
使用例:
sudo netdiscover -r 192.168.1.0/24 -i wlan0
MACアドレスを持つIPが端末に表示されます。スクリーンショットを見る
あなたを助けることを願っています
*** buffer overflow detected ***: netdiscover terminated
。
fping
ICMPを介してネットワーク上の複数のホストをスキャンするための優れたツールです。インストールされていない場合は、次の方法でインストールできます。
sudo apt-get install fping
fping
ICMP ECHO_REQUESTパケットを送信し、ホストからECHO_RESPONSEを取得した場合、ホストをUpとしてマークします。
たとえば、subnetのホストをスキャンするには192.168.1.0/24
、次を実行できます。
fping -g 192.168.1.0/24
特定の数のホストの場合、たとえばfrom 192.168.1.15
から192.168.1.140
:
fping -g 192.168.1.15 192.168.1.140
fping
高度に設定可能です。たとえば、送信されるパケットの数、応答を待つ時間、出力形式などです。
man fping
より多くのアイデアを得るためにチェックしてください。
angry ip scanner