はじめに
自分の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エントリーのすべてを表示する
最後に
自分の備忘録として書きました。情報系の人にとっては何をいまさらという内容だったかもしれません。