最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【開發(fā)記錄】ubuntu 2204腳本實現(xiàn)ddns功能(華為云)

2022-11-29 12:42 作者:鎖部千本  | 我要投稿

/*************這里我只實現(xiàn)了ipv6的ddns功能,ipv4因無公網(wǎng)ip無法驗證******************/
/*************原作者地址https://gitee.com/lvcs/huaweicloud_ddns******************/


一、基本思路
通過本機ifconfig命令或通過IP查詢網(wǎng)站找到本機ip? ? ->? ? 腳本通過api接口直接對華為云的域名解析項做修改? ? ->? ? 使用crontab命令對腳本進行周期執(zhí)行。


二、功能實現(xiàn)

1、添加解析
先在DNS管理控制臺https://console.huaweicloud.com/dns/內(nèi)添加對應(yīng)域名解析記錄。


2、創(chuàng)建IAM賬號
在華為云主賬號下創(chuàng)建IAM賬號(雖然腳本上說沒必要,但是我在實際使用時認證失敗,保險起見再創(chuàng)建一個為好)https://console.huaweicloud.com/iam/(右上角創(chuàng)建賬號),初次設(shè)置后需要退出主賬號,使用IAM賬號登陸華為云,完畢后記住華為主賬號、IAM賬號和IAM密碼。

圖片
創(chuàng)建IAM賬號

3、查看IAM賬號所在區(qū)域

圖片
查看IAM賬號區(qū)域

?

4、獲取id和zone_id
登入華為云的API管理https://apiexplorer.developer.huaweicloud.com/apiexplorer/?選擇所有產(chǎn)品>云解析服務(wù)>Record Set管理>ListRecordSets ,在name項中輸入你的域名點擊調(diào)試,在響應(yīng)體中記錄下id和zone_id

?

圖片
獲取id和zone_id

5、腳本獲取與修改
現(xiàn)在我們有了華為云主賬號、IAM賬號密碼、IAM的地址、id和zone_id,此時我們就可以將腳本中需要填寫的地方依次填上。
首先安裝腳本運行環(huán)境
apt-get updateapt-get install wget curl dnsutils net-tools cron -y

獲取腳本:

wget -N --no-check-certificate?https://raw.githubusercontent.com/lllvcs/huaweicloud_ddns/master/huaweicloud_ddns.sh
或者

wget -N --no-check-certificate?https://cdn.jsdelivr.net/gh/lllvcs/huaweicloud_ddns@master/huaweicloud_ddns.sh

或者

wget -N --no-check-certificate?https://gitee.com/lvcs/huaweicloud_ddns/raw/master/huaweicloud_ddns.sh

以上若獲取不到后面會附上腳本代碼

修改腳本權(quán)限
chmod +x ./huaweicloud_ddns.sh

修改腳本:

用編輯器打開腳本后

USERNAME為IAM賬號

ACCOUNTNAME為華為云主賬號

PASSWORD為IAM密碼

ZONE_ID為獲取的zone_id

RECORDSET_ID為獲取的id

REMOTE_RESOLVE為是否從第三方網(wǎng)站獲取ip,1為獲取,其他數(shù)為不獲取

INTERFACE為網(wǎng)卡名稱,一般為執(zhí)行ifconfig命令后的第一行左邊頂頭的幾個字符

TARGET_IP為自動獲取ip出錯時輸入固定IP

若需從第三方網(wǎng)站獲取ip,則需要取消#GETIPURL的“#”
IAM地址,根據(jù)獲取的地址,取消相應(yīng)的“#”(默認北京一)
DNS地址,根據(jù)添加記錄時的地址,取消相應(yīng)的“#”(默認北京一)

TOKEN和TOKEN_X為認證相關(guān),不用管

在TARGET_IP=$(ifconfig $INTERFACE | grep 'inet6 ' | grep -oE '所在行的最后,按需修改sed值(默認且一般為1),其含義為ifconfig命令后帶inet6前綴的第一個ipv6地址所在行,第幾行就是幾p。
TARGET_IP=$(ifconfig | grep 'inet6 ' | grep -oE '所在行同上,按需修改sed值。?

圖片
修改sed行數(shù)



在curl命令下面,按格式輸入相應(yīng)的域名(name)、解析類型(type)、ttl值(ttl)

圖片
修改域名、解析類型、ttl



ps:腳本的標頭根據(jù)系統(tǒng)不同而不同,可以用whereis命令查看,如:輸入命令whereis sh,我的結(jié)果為sh: /usr/bin/sh /usr/share/man/man1/sh.1.gz,故標頭應(yīng)該為#!/usr/bin/sh

以下為全部腳本代碼


#!/usr/bin/sh

#. /etc/profile

# Copyright 2021 LVCS

# https://github.com/lllvcs/huaweicloud_ddns

# https://gitee.com/lvcs/huaweicloud_ddns

# 在運行此腳本之前,請先在華為云DNS管理控制臺內(nèi)添加對應(yīng)域名的A記錄

# 并獲取對應(yīng)的 ZONE_ID 和 RECORDSET_ID


# 一般來說用戶名和賬戶名相同

USERNAME=""

ACCOUNTNAME=""

PASSWORD=""


# 對應(yīng)解析記錄的 ZONE_ID 和 RECORDSET_ID

ZONE_ID=""

RECORDSET_ID=""


# 從外網(wǎng)API獲取ip地址(默認開啟1)

REMOTE_RESOLVE=1


# 從網(wǎng)卡獲取ip地址(填寫網(wǎng)卡名)

# 并請根據(jù)實際情況填寫sed行數(shù)

INTERFACE="enp2s0"


# 更新IP

TARGET_IP=""


# 獲取ip地址網(wǎng)址

#GETIPURL="https://api.ip.sb/ip"

#GETIPURL="https://api.myip.la"

#GETIPURL="https://v6.ip.zxinc.org/getip"

#GETIPURL="https://api6.ipify.org"

#GETIPURL="https://api.ip.gs/ip"


# End Point 終端地址 請根據(jù)地域選擇,默認為北京1

IAM="iam.myhuaweicloud.com"

#IAM="iam.cn-north-4.myhuaweicloud.com"

#IAM="iam.cn-east-2.myhuaweicloud.com"

#IAM="iam.cn-east-3.myhuaweicloud.com"

#IAM="iam.cn-south-1.myhuaweicloud.com"

#IAM="iam.cn-southwest-2.myhuaweicloud.com"

#IAM="iam.ap-southeast-1.myhuaweicloud.com"

#IAM="iam.ap-southeast-2.myhuaweicloud.com"

#IAM="iam.ap-southeast-3.myhuaweicloud.com"

#IAM="iam.af-south-1.myhuaweicloud.com"


DNS="dns.myhuaweicloud.com"

#DNS="dns.cn-north-4.myhuaweicloud.com"

#DNS="dns.cn-east-2.myhuaweicloud.com"

#DNS="dns.cn-east-3.myhuaweicloud.com"

#DNS="dns.cn-south-1.myhuaweicloud.com"

#DNS="dns.cn-southwest-2.myhuaweicloud.com"

#DNS="dns.ap-southeast-1.myhuaweicloud.com"

#DNS="dns.ap-southeast-2.myhuaweicloud.com"

#DNS="dns.ap-southeast-3.myhuaweicloud.com"

#DNS="dns.af-south-1.myhuaweicloud.com"


TOKEN_X="$(

? ? curl -L -k -s -D - -X POST \

? ? "https://$IAM/v3/auth/tokens" \

? ? -H 'content-type: application/json' \

? ? -d '{

? ? "auth": {

? ? ? ? "identity": {

? ? ? ? ? ? "methods": ["password"],

? ? ? ? ? ? "password": {

? ? ? ? ? ? ? ? "user": {

? ? ? ? ? ? ? ? ? ? "name": "'$USERNAME'",

? ? ? ? ? ? ? ? ? ? "password": "'$PASSWORD'",

? ? ? ? ? ? ? ? ? ? "domain": {

? ? ? ? ? ? ? ? ? ? ? ? "name": "'$ACCOUNTNAME'"

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? },

? ? ? ? "scope": {

? ? ? ? ? ? "domain": {

? ? ? ? ? ? ? ? "name": "'$ACCOUNTNAME'"

? ? ? ? ? ? }

? ? ? ? }

? ? }

? }' | grep X-Subject-Token

)"


TOKEN="$(echo $TOKEN_X | awk -F ' ' '{print $2}')"


if [ -z $TARGET_IP ]; then

? ? if [ $REMOTE_RESOLVE -eq 1 ]; then

? ? ? ? if [ $INTERFACE ]; then

? ? ? ? ? ? TARGET_IP=$(curl -s -6 --interface $INTERFACE $GETIPURL)

? ? ? ? else

? ? ? ? ? ? TARGET_IP=$(curl -s -6 $GETIPURL)

? ? ? ? fi

? ? else

? ? ? ? if [ $INTERFACE ]; then

? ? ? ? ? ? TARGET_IP=$(ifconfig $INTERFACE | grep 'inet6 ' | grep -oE '(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))' | sed -n 1p)

? ? ? ? else

? ? ? ? ? ? TARGET_IP=$(ifconfig | grep 'inet6 ' | grep -oE '(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))' | sed -n 1p)

? ? ? ? fi

? ? fi

fi


curl -X PUT -L -k -s \

"https://$DNS/v2/zones/$ZONE_ID/recordsets/$RECORDSET_ID" \

-H "Content-Type: application/json" \

-H "X-Auth-Token: $TOKEN" \

-d "{\"name\": \"你的域名\",\"type\": \"AAAA\",\"records\": [\"$TARGET_IP\"],\"ttl\": 60}"



6、周期執(zhí)行腳本
使用crontab命令可以實現(xiàn)周期執(zhí)行,在非root用戶下輸入命令crontab -e,選擇編輯器后進入時程表,加入命令50 22 * * * /usr/bin/sh (所在路徑)/huaweicloud_ddns_ipv6.sh其含義為每天22:50執(zhí)行腳本


三、注意事項
若有出錯,注意錯誤代碼和錯誤提示,通過官方文檔可以推斷出哪里錯誤
api響應(yīng)錯誤碼https://support.huaweicloud.com/api-dns/ErrorCode.html?


2023.7.20更新

加入了查詢云解析IP與本機IP的對比

加入了日志文件


【開發(fā)記錄】ubuntu 2204腳本實現(xiàn)ddns功能(華為云)的評論 (共 條)

分享到微博請遵守國家法律
扶绥县| 汪清县| 嘉兴市| 庐江县| 凤冈县| 德令哈市| 桓仁| 凯里市| 筠连县| 桐柏县| 蒙城县| 莱西市| 洪泽县| 定兴县| 吴旗县| 公安县| 沈阳市| 宜君县| 汝阳县| 广灵县| 普格县| 泰来县| 留坝县| 安新县| 綦江县| 调兵山市| 石渠县| 萍乡市| 高邑县| 昭平县| 无极县| 南开区| 高安市| 巴青县| 鄂托克旗| 武冈市| 府谷县| 崇礼县| 乐平市| 启东市| 中山市|