[Linux] LAN内のIPアドレス+Macアドレスの一覧を取得するShell

LAN内の端末管理というものは、隋時管理しないと結構大変なことになります。

・いつの間にか知らないマシンが接続されていた!
・1NICに対して1アドレスのつもりが、仮想NICで複数IPを持っていた!
…などなど。

そういう時は、LAN内のIPから以下を打ち込んで、コーヒーを飲んでれば解決します。

1. 標準コマンドで何とかする

$ for a in `seq 1 254`; do ping -c 1 -w 0.5 192.168.100.$a > /dev/null && arp -a 192.168.100.$a | grep ether; done

解説:
・3オクテット(xxx.xxx.xxx.—)までを指定するやり方
・ウェイトをかけつつ、上記だと192.168.100.1-192.168.100.254までを一覧に出します
・おまけに、ホスト名も解決できれば返してくれます
・Macアドレスだけならば、arpコマンドでも行けるのですが、私はこれをよく利用してます。
・Shellのコマンドである、’for in – do – done’、’arp’、’grep’などの使い方は、リファレンスやmanなどで調べてくださいね
・バッチで前回の結果と差分を取ったり、結果をDBへ入れたりすることで、接続端末の履歴なんかも取れますね
Macアドレスから、メーカーまでは調べることができるので あ!あれか!とわかる場合もあるかもしれません

結果サンプル:
$ for a in `seq 1 254`; do ping -c 1 -w 0.5 192.168.100.$a > /dev/null && arp -a 192.168.100.$a | grep ether; done
gateway (192.168.100.1) at 00:00:87:03:8b:10 [ether] on eth0
? (192.168.100.2) at 00:25:dc:11:01:05 [ether] on eth0
? (192.168.100.53) at 1e:a6:f7:f0:58:49 [ether] on eth0
? (192.168.100.59) at 20:c9:d0:88:1f:a3 [ether] on eth0
? (192.168.100.60) at 84:38:35:e0:c1:30 [ether] on eth0
? (192.168.100.61) at 48:3b:38:b5:0e:3a [ether] on eth0
? (192.168.100.66) at 5c:97:f3:d2:06:fa [ether] on eth0
? (192.168.100.68) at 34:3d:c4:65:53:28 [ether] on eth0
? (192.168.100.100) at 00:23:ae:e7:48:84 [ether] on eth0
? (192.168.100.140) at f8:db:88:fc:42:6a [ether] on eth0
? (192.168.100.141) at 00:0c:29:1b:d1:65 [ether] on eth0
? (192.168.100.142) at 00:0c:29:2a:77:f0 [ether] on eth0
? (192.168.100.143) at 00:0c:29:ff:eb:33 [ether] on eth0
? (192.168.100.148) at 00:0c:29:6b:83:49 [ether] on eth0

2. nmapコマンドでサクっと(こちらがお勧めです)

$ sudo yum install nmap     // nmapは標準では入ってないと思うので
$ nmap -Sp 192.168.100.0/24

結果サンプル:
$ nmap -sP 192.168.100.0/24

Starting Nmap 6.40 ( http://nmap.org ) at 2017-04-05 10:57 JST
Nmap scan report for 192.168.100.1
Host is up (0.0012s latency).
Nmap scan report for 192.168.100.2
Host is up (0.0015s latency).
Nmap scan report for 192.168.100.53
Host is up (0.035s latency).
Nmap scan report for 192.168.100.59
Host is up (0.036s latency).
Nmap scan report for 192.168.100.60
Host is up (0.0019s latency).
Nmap scan report for 192.168.100.61
Host is up (0.0030s latency).
Nmap scan report for 192.168.100.66
Host is up (0.077s latency).
Nmap scan report for 192.168.100.67
Host is up (0.080s latency).
Nmap scan report for 192.168.100.68
Host is up (0.0020s latency).
Nmap scan report for 192.168.100.100
Host is up (0.00064s latency).
Nmap scan report for 192.168.100.140
Host is up (0.00032s latency).
Nmap scan report for 192.168.100.142
Host is up (0.00073s latency).
Nmap scan report for YourHostName (192.168.100.145)
Host is up (0.000067s latency).
Nmap done: 256 IP addresses (13 hosts up) scanned in 3.54 seconds