(2018-02-04 初稿 - 2021-05-11 転記・修正 - 2022-02-24 修正)
はじめに
筆者は、Raspberry Pi3(以下、ラズパイ)を自宅のサーバとして使っている。
ファイルを忘れたとき等、職場から自宅のサーバに接続したいときがある。(^^ゞ
昔は無料のドメイン登録サービス等を利用していたが、宣伝等がうるさく感じ、いつの間にかやめてしまった。
ここでは、ラズパイを利用して、自宅のグローバルIPアドレスをメールで通知するシェルスクリプトを作成する。
自宅のグローバルIPアドレスを知る
まず、自宅のグローバルIPアドレスを知るコマンド。
ネットを検索して、以下のとおり取得できた。多謝 m(__)m
(2022-02-19 追記・修正)
以下のサイトで、グローバルIPが取得できるサイトの一覧があった。多謝 m(__)m
ここでは、GoogleのURLを使って取得する。
$ curl https://domains.google.com/checkip
*.*.*.*
(追記・修正終了)
メールを送る
グローバルIPアドレスを取得して、自分のメールアドレスに通知する。
$ echo "グローバルIPアドレス" | /usr/bin/mail -s "Grobal IP" youremail@gmail.com
echoコマンドで、メール本文、ここでは グローバルIPアドレスを書き込み、mailコマンドで発信する。
-s オプションはメールのタイトル、最後に送信先の自分のメールアドレスを書く。
なお、mail送信の設定をする方法については、以下を参照のこと(手抜き (^^ゞ)。
スクリプト
IPアドレスの取得、メールの送信方法がわかったのでスクリプトを作成する。
基本的な流れは、まず最初にグローバルIPアドレスを取得して、前回のアドレスと比較し、違っていたらメールを送信という流れになる。
ここでは、スクリプトの名前を「get-gip」とする。
$ cat bin/get-gip #!/bin/bash # Get Grobal IP Address # ver 0.02 [2018-02-04] # ver 0.03 [2021-01-24] add whoami # ver 0.04 [2022-02-19] url 変更 uname=$(whoami) pgipfile="/home/${uname}/bin/pgip" # Grobal IPの保存用ファイル if [ ! -f ${pgipfile} ]; then # もしファイルが無かったら echo "1" > ${pgipfile} # 適当な数字を書き込んだファイルを作成 fi pgip=$(/bin/cat ${pgipfile}) # 前回取得したGrobal IPを取得 # 現在のGrobal IPを取得 Ver 0.04 変更 gip=$(/usr/bin/curl -s https://domains.google.com/checkip) echo "Your Grobal IP = ${gip}" # diff # mod H.Y 2019-05-22 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
※Ver0.02で初回起動時の pgipファイルが無い場合のエラーに対応。
Crontabへの登録
スクリプトが正常に動くことが確認できたら、crontabに登録して、定期的に実行できるよにする。
参考までに筆者は以下のとおり登録した。
$ crontab -e 5 * * * * /home/username/bin/get-gip 1>/dev/null
上記の設定だと、毎時5分になるとスクリプトが走る設定。
なお、毎回メールがうるさいので「 1>/dev/null 」で標準出力の場合はメールがこないようにしている。
おわりに
とっても簡単に自宅のグローバルIPアドレスを知ることができた。
IPアドレスを教えてくださっているサーバに負荷が掛からないよう頻繁にアクセスしないように注意すること。
さて、あとは何しようかな… (・・?