Ubuntu 10.10を使っていて気になったのですが、ネットワークに接続されている機器のIPをすべてリストアップできるコマンドラインコマンドはありますか?
例えば、ホームネットワークに接続されているすべてのコンピュータをリストアップするためにこれを使います。理想的には、C++から実行するので、コマンドラインである必要があります
Any ideas?
244 Christopher Gwilliams 2011-03-24
arp-scanコマンドをチェックアウトしてください – おそらくインストールする必要があるでしょう
sudo apt-get install arp-scan
そして、さらに詳しく説明すると
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