それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

AdguardHome のDNSキャッシュをパージ(クリア)をAPIからサクッと行う。

Adguard のキャシュ削除をやりたいと思った。

aguard home にはAPIが用意されている

https://github.com/AdguardTeam/AdGuardHome/blob/master/openapi/openapi.yaml

adguard のAPIを呼び出すcurl スクリプト

サクッと書いたら、こんな感じ。プログラミングするまでもないや。

adg-api.sh

#!/usr/bin/env bash

adg_pass=PASSWORD
adg_user=ADMIN_USER
adg_host=ADGUARD_HOME_IPv4

function adg_api(){
  adg_host=$1
  path=$2
  data=$3
  if [[ ! -z $data ]] ; then
    ret=$(curl --show-error --fail -s -X POST -H 'Content-type: application/json' -u $adg_user:$adg_pass -d "$data"  http://$adg_host/control$path );
    if [[ $? == 0 ]] ;then
      echo Success. >>/dev/stderr
      echo { \"result\" : \"$ret\"};
    else
      echo Failed.
      echo $ret
    fi
  else
    curl -s -X GET -u $adg_user:$adg_pass http://$adg_host/control$path
  fi

}

function main(){
  api_path=$1
  post_data=$2
  adg_api $adg_host $api_path $post_data
}

main $@;

API リクエストを叩けば、軽快に操作できる。

使い方(POST)

./adg-api.sh '/cache_clear' 'dummy'         

使い方例 (GET)

./adg-api.sh '/dns_info'

API を叩けばなにかするときになにかできる。

例えば、DDNSを更新したときにキャッシュクリアするとかね。