#目的
- 自宅のグローバルIPアドレスが変更されたら通知
- 通知方法はEメール
- 送信サーバーは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にアクセスしたい人はいいのではないでしょうか。