📚

[Windows Batch] グローバルIPアドレスをDDNSに通知 (MyDNSJP)

2022/08/06に公開

要約

  • Windows BatchでグローバルIPアドレスをDDNSのMyDNSJPに通知する
  • Windows 10以上でコマンドプロンプトからcurlが使えること
  1. 自身のグローバルIPアドレス(v4)を表示するサイトから情報を取得
  2. DDNSへグローバルIPアドレスを通知する

batch内容

  • GitHub Gistから参照

使用方法

  1. テキストエディタでコードを記述し、保存 (.bat)
  2. ダブルクリックかコマンドプロンプトからファイルを叩く
  3. Batchファイルと同じ場所にlogファイルが生成されているので確認する

コード説明

  • コマンドプロンプトではコマンド結果を直接変数に入れることができないので、一旦ファイルにリダイレクトしそのファイルを変数に入れる必要がある
  • 同様に文字列の検索等も変数からできないので、一旦ファイルにリダイレクトしそのファイル内を検索する
  • コマンドの結果は%ERRORLEVEL%で戻り値を取得できる

処理の流れ

  1. curlでグルーバルIPアドレス情報を取得し、一時ファイルにリダイレクトする
  2. リダイレクトしたファイル内にIPアドレス情報の文字列があるかチェックする
    findstr "^[1-9]*\.[0-9]*\.[0-9]*\.[0-9]" gipv4.tmp > nul
  3. チェックの結果正しくない場合はBatchを修了し戻り値1を返す、正しい場合は継続
  4. リダイレクトしたファイルの中身を変数に入れる (変数格納後一時ファイルは削除)
    set /p gipv4=<gipv4.tmp
  5. curlでDDNSのMyDNSJPにIPアドレスを通知し、一時ファイルにリダイレクトする
  6. リダイレクトしたファイル内にLogin and IP address notify OK.の文字列があるかチェックする
    findstr "Login.and.IP.address.notify.OK\." ddns.tmp > nul
  7. チェックの結果正しくない場合はBatchを修了し戻り値2を返す、正しい場合は継続
  8. 一時ファイルを削除し、ログファイルに追記し正常修了 (戻り値0)

Discussion