Lubuntuで自宅IPの変更通知


目的

  1. 自宅のグローバルIPアドレスが変更されたら通知
  2. 通知方法はEメール
  3. 送信サーバーはGmailを使用

環境

  • Lubuntu 18.04

作業内容

Global IPを取得する

上記サイトより、Global IPの取得方(といううか、ほとんど全部)のお知恵を拝借しました。ありがとうございます。
シェルマグさんではLINEを使ってますが、私はメールがいいので、その辺は別からお勉強させていただきました。
よって、

gip_filename="/home/USER/ip/global_ipaddress"
gip_log="/home/USER/ip/logs/global_ip.log"
current_ip=$(curl -s ifconfig.io)
#global_ip="hoge" # For Debug
global_ip=$(cat ${gip_filename})

if [ ${current_ip} != ${global_ip} ]; then
    datetime=$(date "+%Y%m%d%H%M%S")
    echo ${current_ip} > ${gip_filename}
    echo "${datetime} : ${current_ip}" >> ${global_ip.log}

    #メール送信
fi

という形になりました。
後々いつIPが変わったか分かるように、比較用ファイルの他にlogファイルにappendするようにしました。

メールで通知する

どうやって送るか -> ssmtp

を参考にさせて頂きました。詳細は↑をご覧ください。掻い摘んでちょっとだけ

sudo apt-get -y install ssmtp
sudo vi /etc/ssmtp/ssmtp.conf

以下を追記

#/etc/ssmtp/ssmtp.conf

mailhub=smtp.gmail.com:587
AuthUser=アカウント@gmail.com
AuthPass=パスワード
UseSTARTTLS=YES

その後は、Googleアカウントから 安全性の低いアプリのアクセスをオンにする で準備完了

スクリプトにメール送信を追加

if文内の #メール送信 以下に追記

#/home/USER/ip/ip_notifyer.sh

    filename="/home/USER/ip/logs/mail_${datetime}.txt"
    touch ${filename}

    echo "From: アカウント@gmail.com" > ${filename}
    echo "To: 宛先メアド" >> ${filename}
    echo "Subject: Detected IP Address Change" >> ${filename}
    echo "" >> ${filename}
    echo "Detected IP address change. The new IP address is ${current_ip}" >> ${filename}

    /usr/sbin/sendmail -i -t < ${filename}

これでIPが変わった時にメールが送信されます。
こちらも送った内容を保存してます。そのうち止めるかもだけど。

自動実行

監視してもらうために、作ったスクリプトをcron実行します。

crontab -e

#以下追記
*/10 * * * * /bin/bash /home/USER/ip/ip_notifyer,sh

これで10分毎にIPチェックしてくれますね。
IP変わらないから、/home/USER/ip/global_ipaddressの中身をいじって待機。無事に変更が検出されてメールが飛んできました。

結果

とりあえず、これでIPの変更がどこでも分かるようになりました。
RDPとかで家PCにアクセスしたい人はいいのではないでしょうか。