Ubuntu下動態ip公網繫結網域名稱

2021-10-04 23:22:49 字數 4893 閱讀 7588

配置檔案:/etc/network/inte***ces

auto eth0

iface eth0 inet static

address 192.168.1.80

netmask 255.255.255.0

gateway 192.168.1.1

service networking restart

配置檔案: /etc/netplan/50-cloud-init.yaml

network:

ethernets:

eth0:

addresses: [192.168.1.80/24]

gateway4: 192.168.1.1

nameservers:

addresses: [192.168.1.1]

version: 2

#!/bin/bash

# 設定需要ddns的位址,格式為 aliddns_subdomainname.aliddns_domainname ,

# 例如 aliddns_domainname 為 example.com, aliddns_subdomainname 為 ddns ,

# 連線起來就是 ddns.example.com

## 設定需要ddns的網域名稱

aliddns_domainname=

"domainname"

# 設定需要ddns的子網域名稱

aliddns_subdomainname=

"subdomainname"

# 設定網域名稱記錄的ttl (生存週期)

# 免費版產品最低為600(10分鐘)~86400(1天), 付費版(企業版)包括以上範圍, 還可以按照購買產品配置設定為:

# 600(10分鐘)、120(2分鐘)、60(1分鐘)、10(10秒)、5(5秒)、1(1秒),

# 請按照自己的產品配置和ddns解析速度需求妥善配置ttl值, 免費版設定低於600的ttl將會報錯。

aliddns_ttl=

"600"

# 設定阿里雲的accesskeyid/accesskeysecret,

# 可在 處獲取 ,

# 推薦使用 生成的ak/sk, 更安全

## 設定阿里雲的access key

aliddns_ak=

"access key"

# 設定阿里雲的secret key

aliddns_sk=

"secret key"

# 設定獲取本機ip需要執行的命令 (用於nslookup命令獲取ddns網域名稱的當前ip)

aliddns_localip=

"curl -s whatismyip.akamai.com"

# 設定解析使用的dns伺服器 (推薦使用 223.5.5.5/223.6.6.6 , 畢竟都是阿里家的東西)

aliddns_domainserverip=

"223.5.5.5"

# 防止使用者忘記設定引數導致程式報錯,部分引數如果檢測到空值,自動使用預設值

["$aliddns_localip"=""

]&& aliddns_localip=

"curl -s whatismyip.akamai.com"

["$aliddns_domainserverip"=""

]&&$aliddns_domainserverip

="223.5.5.5"

["$aliddns_ttl"=""

]&& aliddns_ttl=

"600"

# 獲取本機公網ip

aliddns_localip=

`$aliddns_localip 2>

&1` || die "$aliddns_localip"

# 獲取ddns網域名稱當前解析記錄ip

aliddns_domainip=

`nslookup $aliddns_subdomainname.$aliddns_domainname $aliddns_domainserverip 2>

&1`# 判斷上一條命令的執行是否成功if[

"$?" -eq "0"

]then

# 如果執行成功,分離出結果中的ip位址

aliddns_domainip=

`echo

"$aliddns_domainip"

|grep

'address:'

|tail -n1 |

awk''

` # 進行判斷,如果本次獲取的新ip和舊ip相同,結束程式執行if[

"$aliddns_localip"

="$aliddns_domainip"

]then

echo

"[$(

date

"+%g/%m/%d %h:%m:%s"

)] local ip ($aliddns_localip) is the same with domain ip ($aliddns_domainip)"

echo

"[$(

date

"+%g/%m/%d %h:%m:%s"

)] no change modified ..."

exit 0

fifi# 如果ip發生變動,開始進行修改

# 生成時間戳

timestamp=

`date -u "+%y-%m-%dt%h%%3a%m%%3a%sz"

`# url加密函式

urlencode(

)# url加密命令

enc(

)# 傳送請求函式

send_request(

)# 獲取記錄值 (recordid)

get_recordid(

)# 請求記錄值 (recordid)

query_recordid(

)# 更新記錄值 (recordid)

update_record(

)# 新增記錄值 (recordid)

add_record(

)# 判斷recordip是否為空if[

"$aliddns_recordid"=""

]then

aliddns_recordid=

`query_recordid | get_recordid`

fiif

["$aliddns_recordid"=""

]then

aliddns_recordid=

`add_record | get_recordid`

echo

"[$(

date

"+%g/%m/%d %h:%m:%s"

)] added recordid : $aliddns_recordid"

else

update_record $aliddns_recordid

echo

"[$(

date

"+%g/%m/%d %h:%m:%s"

)] updated recordid : $aliddns_recordid"

fi# 輸出最終結果if[

"$aliddns_recordid"=""

];then

# 輸出失敗結果 (因為沒有獲取到recordid)

echo

"[$(

date

"+%g/%m/%d %h:%m:%s"

)] ddns update failed !"

else

# 輸出成功結果

echo

"[$(

date

"+%g/%m/%d %h:%m:%s"

)] ddns update success, new ip is : $aliddns_localip"

fi

指令碼來自網路,非本人所寫!

cron是乙個linux定時執行工具,可以在無需人工干預的情況下執行作業。在ubuntu中,cron是被預設安裝並啟動的。

1、crontab定時任務語法如下:

minute   hour   day   month   week  user  command

#順序:分 時 日 月 周 使用者 命令

2、說明:

minute

hour

daymonth

week

user

command

從 0 到 59 之間的任何整數

從 0 到 23 之間的任何整數

從 1 到 31 之間的任何整數

從 1 到 12 之間的任何整數

從 0 到 7 之間的任何整數

linux的使用者身份

要執行的命令 *

代表所有可能的值,例如 month 字段如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。

,可以用逗號隔開的值指定乙個列表範圍,例如,「1,2,5,7,8,9」

-可以用整數之間的中槓表示乙個整數範圍,例如「2-6」表示「2,3,4,5,6」

/可以用正斜線指定時間的間隔頻率,例如「0-23/2」表示每兩小時執行一次,*/10,如果用在 minute 字段,表示每十分鐘執行一次。

crontab -e

# 新增

*/10 * * * * ~/script/aliddns.sh

sudo

service

cron restart

Ubuntu 下串列埠繫結

ubuntu繫結串列埠是利用udev規則 首先檢視裝置id 在終端輸入命令 將這裡的id號記錄下來然後開啟然後建立udev規則 在終端輸入命令 cd etc udev rules.d 建立.rules檔案填入 在檔案中輸入將idvendor idproduct修改 mode是許可權 kernel t...

阿里雲ecs配置輔助網絡卡繫結公網ip位址

前置條件 1.大家的例項是從經典遷移到vpc裡面的,上古時期,經典例項大家購買例項的時候都是買了頻寬的。而這種頻寬一般情況下都是包年包月的,而且這種繫結在例項上的ip,我們把它叫做公網ip,而公網ip不是eip,沒法解綁和繫結。2.為了實現把公網ip繫結在伺服器內部,我們需要乙個彈性輔助網絡卡 建立...

Ubuntu 單網絡卡繫結多個IP

注 我的是eth0,但別的電腦可能不同,具體檢視命令ifconfig,將你電腦出現的ethx替換成下文的eth0 第一種方法 快遞建立 刪除虛擬網絡卡 sudo ifconfig eth0 0 192.168.10.10 up 以上的命令就可以在eth0網絡卡上建立乙個叫eth0 0的虛擬網絡卡,他...