以下の内容はhttps://pslabo.hatenablog.com/entry/2017/12/23/094049より取得しました。


OpenWRT/LEDEの各種ログの閲覧時にMACアドレス情報にホスト名を追記するスクリプトを書いてみる

OpenWRT/LEDEではログ表示に logread コマンドを用いるわけですが、このログには WiFi への接続情報や DHCP に関する情報が出力されており、ここには MAC アドレスも記録されています。

この MAC アドレスとホスト名の紐付けは /tmp/dhcp.leases に記録されているのですけど、どの機材がどのようにアクセスしてきたかを確認したいときに logread と dhcp.leases を交互に見比べれるのは面倒です。

そこで、dhcp.leases を使って MACアドレス→ホスト名の変換を行ってくれるフィルタを描いてみました。

使用前、使用後の比較

普通に arp するとこんな感じですね。

root@LEDE:/# arp
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.80     0x1         0x2         b8:e8:56:00:00:00     *        br-lan
192.168.1.1      0x1         0x2         00:26:92:03:be:e8     *        br-lan
192.168.1.78     0x1         0x2         f4:0f:24:00:00:00     *        br-lan

これはあまりわかりやすくない。で、今回作成した mac2hostname を使うとこんな感じ。

root@LEDE:/# arp | mac2hostname 
IP address       HW type     Flags       HW address            Mask     Device
192.168.1.80     0x1         0x2         b8:e8:56:00:00:00(Macbook)     *        br-lan
192.168.1.1      0x1         0x2         00:26:92:03:be:e8     *        br-lan
192.168.1.78     0x1         0x2         f4:0f:24:00:00:00(iPhone7)     *        br-lan

これならわかりやすい。そして置換が行われていない表示されるホスト名は各機材で設定のものが用いられます。ホスト名が追記されない箇所はIPアドレス固定割当でしょうから特に支障はないはず。

#!/usr/bin/awk -f
#
# /usr/bin/mac2hostname
#
BEGIN {
    # DHCPリースの読み込み
    readDHCPLeases();
}

{
    "date -r /tmp/dhcp.leases +%s" | getline LastUpdateDHCPLease

    # DHCPリースが更新されていたら再読み込みする
    if ( LastCheckDHCPLease < LastUpdateHDCPLease ) {
        readDHCPLeases();
    }

    # 1行読み込むたびに既知のMACADDRESSを探してホスト名に置換する
    for (macaddr in mac2hostname) {
        gsub(macaddr, mac2hostname[macaddr] "(" macaddr ")" )
    }
    print $0
    fflush()
}

function readDHCPLeases() {
    LastCheckDHCPLease = systime();
    while((getline < "/tmp/dhcp.leases") > 0) {
        mac2hostname[$2]=$4
    }
}



以上の内容はhttps://pslabo.hatenablog.com/entry/2017/12/23/094049より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14