筆者は、Raspberry Pi3(以下、ラズパイ)を自宅のサーバとして使っています。
ファイルを忘れたとき等、職場から自宅のサーバに接続したいときがあります。(^^ゞ
昔は無料のドメイン登録サービス等を利用していましたが、宣伝等がうるさく感じ、いつの間にかやめてしまいました。
ここでは、ラズパイを利用して、自宅のグローバルIPアドレスをメールで通知するシェルスクリプトを作成します。
まず、自宅のグローバルIPアドレスを知るコマンドです。
ネットを検索して、以下のとおり取得できました。多謝 m(__)m
$ curl inet-jp.info
*.*.*.*
グローバルIPアドレスを取得して、自分のメールアドレスに通知します。
$ echo "グローバルIPアドレス" | /usr/bin/mail -s "Grobal IP" youremail@gmail.com
echoコマンドで、メール本文、ここでは グローバルIPアドレスを書き込み、mailコマンドで発信します。
-s オプションはメールのタイトル、最後に送りたい自分のメールアドレスを書きます。
なお、mail送信の設定をする方法については、以下を参照してください(手抜き (^^ゞ)。リンク先作成検討中 (^^ゞ
debianサーバでメールを送る(exim4編)
IPアドレスの取得、メールの送信方法がわかったのでスクリプトを作成します。
基本的な流れは、まず最初にグローバルIPアドレスを取得して、前回のアドレスと比較し、違っていたらメールを送信という流れになります。
ここでは、スクリプトの名前を「get-gip」とします。
$ vi bin/get-gip
#!/bin/bash
# Get Grobal IP Address written by hyamada
# ver 0.02 [2018-02-04]
uname="pi" # ユーザーネームに変更してね
pgipfile="/home/${uname}/bin/pgip" # Grobal IPの保存用ファイル
if [ ! -f ${pgipfile} ]; then # もしファイルが無かったら
echo "1" > ${pgipfile} # 適当な数字を書き込んだファイルを作成
fi
pgip=$(/bin/cat ${pgipfile} ) # 前回取得したGrobal IPを取得
gip=$(/usr/bin/curl -s inet-ip.info) # 現在のGrobal IPを取得
echo "Your Grobal IP = ${gip}"
# diff
if [ ${pgip} = ${gip} ]; then # 同じだったら
echo "same"
else # 違っていたらメールを送る
#echo "different"
echo ${gip} | /usr/bin/mail -s "Grobal IP" yourmail@gmail.com # あなたのメールアドレスに変更
fi
echo ${gip} > ${pgipfile} # 次回のためにGrobal IPを保存
なお、ファイルを作成したら、以下のとおり実行権を与えてください。
$ chomod +x ~/bin/get-gip
ちなみに、初回の起動時は pgip ファイルがないとエラーになりますが、初回だけですので、無視してください(手抜き (^^ゞ)。
ver0.02でファイルが存在しない場合にも対応しました。
スクリプトが正常に動くことが確認できたら、crontabに登録して、定期的に実行するようにします。
参考までに筆者は以下のとおり登録しました。
$ crontab -e
5 * * * * /home/username/bin/get-gip 1>/dev/null
上記の設定だと、毎時5分になるとスクリプトが走ります。
なお、いちいちメールがうるさいので「 1>/dev/null 」で標準出力の場合はメールがこないようにしています。
とっても簡単に自宅のグローバルIPアドレスを知ることができました。
IPアドレスを教えてくださっているサーバに負荷が掛からないよう頻繁にアクセスしないようにしましょう。
さて、あとは何しようかな… (・・?