はじめに
自分のPCと同じLAN内にある機器(192.168.0.0/24)のMACアドレスを調べたい。そこでpingコマンドを用いてarpテーブルに192.168.0.0/24の機器のMACアドレスを記録し、それをarpコマンドで取得。
pingコマンドを用いてarpテーブルにMACアドレスを記録
echo 192.168.207.{0..254} | xargs -P256 -n1 ping -s1 -c1 -W1
これで自分のPCと同じLAN内にある機器(192.168.0.0/24)のMACアドレスがarpテーブルに記録される。
|
はUnix系オペレーティングシステムのパイプ(pipe)である。複数のプログラムの入出力をつなぐための仕組みで、今回はecho
コマンドで標準出力に出力したipアドレスへxargs
とping
コマンドを使ってpingを飛ばす。
echo 192.168.0.{0..254}
192.168.0.0から192.168.0.254までのipアドレスを標準出力に出力する。
xargs -P256 -n1 ping -s1 -c1 -W1
xargs
のオプション
-
-P256
: 同時に実行するプロセス数の上限が256という意味 -
-n1
: 1回のコマンドラインで使用する引数の上限が1という意味(この指定によって各ipアドレスへpingが飛ばされる)
ping
のオプション
-
-s1
: pingの試験するパケットサイズを1に設定する -
-c1
: pingの回数を1に設定する -
-W1
: 送信した各パケットの返信を10ミリ秒待つ時間(どれくらいの時間をとればいいのかはよくわからないのでちょっと長めにした、大体は1ms以内に返信が返ってくる)
arpコマンドを用いてarpテーブルの内容を取得(ついでに保存)
$ arp -a > arp.log
arpテーブルの内容をarp.log
に保存
-a
は現在のARPエントリーのすべてを表示する
最後に
自分の備忘録として書きました。情報系の人にとっては何をいまさらという内容だったかもしれません。