IP変更ログスクリプト作成

家においてあるサーバ(Primergy mx130s2)をルータ化した。

なんだかんだ結構苦労した気がする…

次回同じような轍を踏まないよう何かログを残していく。

概要

インターフェースと日付とIPをログに吐き出すスクリプト。

毎分実行すればIPの変更を書き込んでくれる。

注意点

ifconfigの出力に依存しているため、Gentoo Linux(2013/11/16現在)のStable 以外ではうまく出力が取れないかもしれない。

スクリプト本体

#!/bin/bash

LOG=/var/log/ip.log

log_ip() {
    interface=$1
    newip=$( ifconfig $interface 2>&1 | grep inet | awk '{print $2}' )
    oldip=$( cat $LOG 2>&1 | grep "^$interface" | tail -n 1 | awk '{print $4}' )
    if [[ "$newip" != "$oldip" ]]
    then
        echo "$interface $(date '+%Y/%m/%d %H:%M:%S') $newip" >> "$LOG"
    fi
}

log_ip ppp1
log_ip ppp2

おまけ(ifconfig出力例)

ちなみにうちのifconfig結果はこんな感じです。

ppp1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1454
        inet XXX.XXX.XXX.XXX  netmask 255.255.255.255  destination YYY.YYY.YYY.YYY
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 170863  bytes 222660742 (212.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 71532  bytes 6727233 (6.4 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

いつからかこの出力方式に変わった気がするけど、いつだったかな。

記法とかミスってるところ、気をつけたほうがいいとこ等あったら教えてもらえると助かります

comments powered by Disqus
カテゴリ
タグ
月別アーカイブ