jxyblog

jxyblog

email

openwrt路由器透過腳本進行華為域名API自動更新WAN口的域名解析

大家好,動態域名解析應該都不陌生吧,很多路由器甚至集成 ddns 動態域名解析服務,但是沒有華為域名的解析服務,所以我們只能自己用腳本調用 API 進行華為的域名解析。 這裡推薦一個管理路由器的軟體WinSCP 工具放百度網盤了。 有了這軟體很多操作就不用敲代碼了,很方便用 scp 協議登入就行

1,準備工作 開始之前我們需要獲得一些必要的參數,大家先登入自己的雲控制台,創建一個 iam 賬戶,管理員賬號似乎不行,我調試的時候一直報錯,在統一身份認證服務裡面。

1111 創建好後打開控制台的修改域名解析介面,多個域名的要單獨打開其中一個域名,我們可以獲得這個域名的 zone_id,每個域名都有單獨的 zone_id,如下圖所示。 提取出域名 zone_id 備用。

22222

2,獲得 recordset_id 由於每個域名下面有很多個解析記錄,每個解析記錄都有一個 recordset_id,我們需要打開華為的 API 調試工具查看一下域名下的每個解析記錄的 id,地址 API 調試,要先登入華為賬號才能用,介面如下,在 zone_id 那裡填入你剛才獲得的一串字符。

333 輸入 zone_id 點擊調試,在右邊的介面選取你需要解析的那個域名的 recordset_id 就是最上面那個,注意別選錯了,我這邊設置的是 ipv6 的解析,也就是 AAAA。

44444 3,最後需要準備的數據大概如下: adminname='hw123456789' 管理員賬號 username='123456' 新建的賬號 password='123456' 新建賬號的密碼 zoneid='ff80808287asdadadasd7d1b56243' recordsetid='ff80808287asdasdad3b1d031404c4' domain='jxyblog.top' 需要修改解析的域名,我直接使用根域名 4,先進行路由器端口 IP 地址獲取調試 不然待會兒運行腳本會出錯 ssh 登入路由器介面,運行以下命令看看能不能正常獲得 wan 口的 ipv6 地址,我的是 pppoe 撥號的。 ifconfig pppoe-pppoe | grep inet6 | awk 'NR==1{print $3}' | cut -d'/' -f1 正常的話出來是下面圖片這樣

5555

如果不是的話先單獨輸入 ifconfig 查看所有端口,我的是 pppoe-pppoe,然後過濾只顯示帶 inet6 的行,NR==1 打印第一行,print $3 打印第三列,自己慢慢改,調試出單獨的 ipv6 地址就行了。

5,路由器要安裝的軟體,打開路由器軟體包介面安裝以下兩個軟體 curl 調試工具

bash 腳本工具 以上幾個步驟準備完大概就可以運行腳本了。

6,以下是腳本代碼 ``` #!/bin/bash adminname='hw123456789' #這部分上面說過了正常填就行了 username='123456' password='123456' zoneid='ff8080828732b7946445465b56243' recordsetid='ff80808654665156173b1d031404c4' domain='jxyblog.top'

token=$(curl -L -k -s -D - -X POST 'https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens' \ --header 'Content-Type: application/json;charset=UTF-8' \ --data-raw '{"auth":{"identity":{"methods":["password"],"password":{"user":{"domain":{"name":"'$adminname'"},"name":"'$username'","password":"'$password'"}}},"scope":{"domain":{"name":"'$adminname'"}}}}' | grep X-Subject-Token | awk '{print $2}')

wanip=$(ifconfig pppoe-pppoe | grep inet6 | awk 'NR==1 {print $3}' | cut -d'/' -f1) #這裡之前上面調試過的,如果有更改的話改一下就行了

curl -i --location --request PUT 'https://dns.myhuaweicloud.com/v2.1/zones/'$zoneid'/recordsets/'$recordsetid'' \ --header 'Content-Type: application/json;charset=UTF-8' \ --header 'X-Auth-Token: '$token'' --data-raw '{"name":"'$domain'.","type":"AAAA","ttl":300,"records":["'$wanip'"]}' ```

創建一個後綴是.sh 的文件,保存到路由器裡,比如我保存到 /mnt,運行以下代碼 /bin/bash /tmp/ddns.sh 如果返回正常應該是以下圖所示

666 這裡就已經更新了伺服器上的解析記錄了。

7,設置定時更新解析記錄或者定時檢測 IP 變化更新解析記錄。 比如在路由器裡面設置每 12 小時運行腳本,如下圖所示

* */12 * * * /bin/bash /mnt/ddns1.sh

777

如果設置每 10 分鐘檢測 IP 變化進行域名解析,我前面文章有發過檢測 IP 變化的腳本,腳本如下,詳細可看之前的文章鏈接: 【詳細教程】Openwrt 公網 IP 地址變動自動郵件通知(IPv4、IPv6 都可)【轉載重新整理】

#!/bin/bash current_ipv6=$(ip -6 addr show br-lan | grep -oE 'inet6 [0-9a-fA-F:]+(/[0-9]+)?' | awk '{print $2}') if [ ! -f /tmp/wan_ip.txt ]; then echo "$current_ipv6" > /tmp/wan_ip.txt echo -e "Subject: OpenWRT WAN IP\n\n首次運行腳本,WAN IPv6 地址為: $current_ipv6" | msmtp -a default [email protected] fi saved_ip=$(cat /tmp/wan_ip.txt) if [ "$current_ipv6" != "$saved_ip" ]; then echo -e "Subject: OpenWRT WAN IP Changed\n\nWAN IPv6 已更改為: $current_ipv6\n之前的 IP 地址為: $saved_ip" | msmtp -a default [email protected] echo "$current_ipv6" > /tmp/wan_ip.txt /bin/bash /mnt/ddns1.sh       #這裡直接插入域名解析腳本,ip變化直接ddns fi ```

到此結束,如果有幫到你們的話真的太好了
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。