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 $@;
使い方(POST)
./adg-api.sh '/cache_clear' 'dummy'
使い方例 (GET)
./adg-api.sh '/dns_info'
API を叩けばなにかするときになにかできる。
例えば、DDNSを更新したときにキャッシュクリアするとかね。