linux – どのようにして接続されたネットワーク内のすべてのIPをリストアップすることができますか?

ip linux networking ubuntu

Ubuntu 10.10を使っていて気になったのですが、ネットワークに接続されている機器のIPをすべてリストアップできるコマンドラインコマンドはありますか?

例えば、ホームネットワークに接続されているすべてのコンピュータをリストアップするためにこれを使います。理想的には、C++から実行するので、コマンドラインである必要があります

Any ideas?

  244  Christopher Gwilliams  2011-03-24


ベストアンサー

arp-scanコマンドをチェックアウトしてください – おそらくインストールする必要があるでしょう

sudo apt-get install arp-scan
http://manpages.ubuntu.com/manpages/hardy/man1/arp-scan.1.html

そして、さらに詳しく説明すると

sudo arp-scan --interface=eth0 --localnet

eth0 はあなたのデバイスです。でデバイスを見つけることができます

ifconfig

260  Linker3000  2011-03-24


nmapを使ってみましょう。nmap -sn 10.10.10.0/24 arpキャッシュは最近連絡を取ろうとしたものだけを教えてくれます

122  Keith  2011-03-24


Windowsでは”arp -a“となりますが、Linuxでは”arp -e“となると思います

この情報は、arp の man ページにあります

arp with no mode specifier will print the current content of the table.
-e : Use default Linux style output format (with fixed columns).

20  David  2011-03-24


ネットワークが192.168.0.0/24の場合は、以下のコードで実行ファイルを作成してください; 192.168.0を実際のネットワークに変更してください

#!/bin/bash
for ip in 192.168.0.{1..254}; do
ping -c 1 -W 1 $ip | grep "64 bytes" &
done

18  Anders Larsson  2013-05-17


nmap (sudo apt-get install nmap) をインストールしてみて、nmap 192.168.1.0/24 と入力して 192.168.1 をあなたの ip アドレスの最初の 3 つの部分に置き換えてみてください (ip addr を使って調べてください)

また、ping 192.168.1.255 (再び192.168.1の代わりに) を実行することで、ネットワーク上のすべてのマシンにpingを発行することができますが、私の経験では、常に正しく機能するとは限りません

14  vktec  2013-09-08


arp-scanはレポにはないが、nmapはプレインストールされているので、tmuxを使ってnexusで以下のようにしてみたところ、IPアドレスだけが表示されました

nmap -sn 192.168.1.1-254/24 | egrep "scan report" | awk '{print $5}'

3  zentek  2016-10-30


接続されているデバイスをよりコンパクトにリストアップするには

nmap -sL 192.168.0.* | grep \(1

Explanation.

nmap -sL 192.168.0.*は、サブネットワーク内の全てのIPをリストアップし、名前のついたIPをマークします

Nmap scan report for 192.168.0.0
Nmap scan report for Dlink-Router.Dlink (192.168.0.1)
Nmap scan report for 192.168.0.2
...
Nmap scan report for android-473e80f183648322.Dlink (192.168.0.53)
...
Nmap scan report for 192.168.0.255

すべての興味深いレコードは括弧(と桁1で始まるので、| grep \(1でフィルタリングします(括弧のエスケープにはバックスラッシュが必要です)

Quirk 2つのデバイスが同じ名前を持つ場合、nmapは最後にルータに接続された1つだけを表示することに注意してください

1  Alexander Malakhov  2016-10-20


アンダース・ラーソンの答えを詳しく説明します

#!/bin/bash
function scan ()
{
for ip in $1.{1..254}; do
ping -c 1 -W 1 $ip &
done | sed -nE 's:^.* from ([0-9.]+).*time=(.*s)$:\1 (\2):p'
}

if [ $1 ]; then
for baseip; do
scan $baseip
done
else
scan 192.168.1
fi

0  Mathieu CAROFF  2018-07-06


このAnwswerは、他のAnwswerではそれを提供する必要がありますが、自分自身でサブネットを決定します

スクリプトは、arp -aまたはip -o -f inet addr showを使用してサブネットを見つけます

書きかけのスクリプトを作ってみました。nmapの使用は避けていますが、スクリプトはnmapを使用するように簡単に修正されています

基本的に、$baseipは、コマンドラインでパラメータが提供されていない場合、スクリプトの第二部でbash置換マクロを使用して構築されます。それ以外の場合は、指定されたサブネット(スタイル: 192.1.5でIPの3番目のドットラストバイトなし)をスキャンします

#!/bin/bash
function scan ()
{
for ip in $1.{1..254}; do
ping -c 1 -W 1 $ip &
done | sed -nE 's:^.* from ([0-9.]+).*time=(.*s)$:\1 (\2):p'
wait
}

if [ $1 ]; then
for baseip; do
scan $baseip
done
else
baseip=$(arp -a) && baseip=${baseip%%\)*} && baseip=${baseip##*\(}
if [ $baseip"" == "" ] ; then
baseip=$(ip -o -f inet addr show|grep "scope global") && baseip=${baseip##* inet} && baseip=${baseip%%/*}
fi
baseip=${baseip%.*}
scan $baseip
fi

0  le_top  2020-06-08


タイトルとURLをコピーしました