Y子です。
自宅のグローバルIPアドレスが変わったときなどに、それを外出先から確認する方法を考えました。
#概要・用途
__バッチファイルでグローバルIPアドレスを取得__し、Dropbox管理下のテキストファイルに書き込むことで、外出先等どこからでもIPアドレスを確認可能とします。
この処理をWindowsのタスクスケジューラーに登録し、定期的に情報を自動更新します。
以下のような用途を想定します。
用途(例) |
---|
自宅のプロバイダ契約が固定IPアドレスでない場合、ルータが再起動するとグローバルIPアドレスが変わることがある。 自宅にWebサーバを置き、ドメイン名を割り当てて外部からアクセスしている場合、グローバルIPアドレスが変わるとアクセスできなくなるため、DNS設定を変更するために変更後のIPアドレスが知りたい。 |
なお、外出中も自宅のWindows PCが稼働していることが前提です。
これが一番のハードルかもしれませんね…。
【確認環境:Windows 10 Home (Bld. 19042.928)】
#手順
##(1) バッチファイル作成
@echo off
rem 日付「2021/04/02」形式
set str_date=%date%
rem 時刻「09:46:17」形式
set str_time=%time: =0%
set str_time=%str_time:~0,8%
rem コマンドの実行結果を変数に格納
for /f "usebackq" %%a in (`curl https://api.ipify.org`) do set ipaddr=%%a
rem ファイル格納場所はDropbox配下
set outfile="C:\Users\yourname\Dropbox\globalip_%ipaddr%.txt"
rem ファイルに出力
echo [%str_date% %str_time%] %ipaddr%> %outfile%
__前の記事__の方法で、curl
コマンドを使ってグローバルIPアドレスを取得します。
出力先は、Dropbox配下のテキストファイルですので、パスはお使いの環境に合わせて書き換えてください。
ファイルの内容とファイル名は、以下の方針で決めました。これは用途や使いやすさで調整するのがいいと思います。
- ファイル内容にIPアドレスを記録 … この情報が欲しいので外せない
- ファイル内容に日時を記録 … いつ時点の情報かわかるように
- ファイル名にIPアドレスを記録 … ファイルを開かなくてもわかって楽。あとファイルが増えるとIPアドレスが変わったことになるので気付きやすい
- ファイル名に日時は無し … 日時を付けるとファイルが増えて管理が面倒なので無し
また、ファイルへの書き込みは上書き>
で行っていますが、追記>>
にしてログのように扱うのもアリと思います。
> watch_globalip.bat
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13 100 13 0 0 6 0 0:00:02 0:00:02 --:--:-- 5
[2021/04/22 19:34:52] xx.xx.xx.xx
できました。結果のIPアドレスは、xx.xx.xx.xx
と伏せています。
Dropboxで共有できているか、確認します。
##(2) スケジューラー登録
作成したバッチファイルを、Windowsのタスクスケジューラーに登録します。
- スタート
- Windows管理ツール
- コンピューターの管理
- タスクスケジューラー
- タスクの作成
トリガーを適切に設定して保存し、動作確認として1回実行してみてください。
わたしは、「毎日」のトリガーを1日4回設定して、6時間間隔で実行するようにしています。
これで、グローバルIPアドレスが変わってしまっても察知できる準備が整いました。
##(3) DNS設定変更
IPアドレスが変わって設定が必要になったら、お使いのドメイン登録サービス(お名前.comとか)で設定してください。
サービスによっては、自動的に設定変更できる仕組みが用意されているかもしれません。
#おわりに
タスクスケジューラーとDropboxを組み合わせる方法を思いついたときは感動しました。
固定IP無しで自宅サーバを運用している方は、どうしてるんでしょうね。
同じように困ってるのか、わたしが知らないだけでとっくに解決済みなのか…。
他のやり方をご存じの方は、ぜひ教えていただきたいです。
では!