我在一個單獨的目錄中有很多文件,其中有3行我需要編輯,如果第一行被編輯,但我不能包裹我的頭周圍怎麼做。 重點是將MX記錄從指向我的服務器改爲指向郵件。相反,並指向服務器IP。這使得Cpanel中的遷移變得更容易。我有成千上萬的記錄要經過。通過sed/awk或類似的SSH通過SSH就地編輯DNS記錄
DNS更新
1號線:
example.com. 14400 IN MX 0 servername.com.
如果最後一個塊是 「servername.com」,應改爲mail.example.com執行,而不是像這樣
example.com. 14400 IN MX 0 mail.example.com.
如果這裏沒有什麼改變,我想跳過下一個部分,然後轉到目錄中的下一個文件。
第2行:
mail IN CNAME servername.com
對於任何記錄,其中線1改變,這條線應改爲
mail IN A 8.8.8.8
行3:
遞增的序列號的DNS記錄在第1行被更改的任何文件中。 10位數字可以是任何東西,但始終是該行的第一行,並始終在#5行。
2015061800 ; serial, todays date+todays
- 或 -
2015061800 ;Serial Number
我需要設置數字到今天的日期格式YYYYMMDD09
這是我到目前爲止有:
#! /bin/sh
while IF= read dname
do
sed -i -r "s/MX\s*0\s*servername.com/MX 0 mail.$dname/g" $dname.db
done < dirlist.txt
這需要dirlist.txt包含一個域名列表,找到並重新放置ces servername.com與mail.domainname.com爲文件domainname.com.db。這工作,但原來的字段可以有不同的MX和servername.com之間的數值。我想忽略該字段,但寫入
MX\s**\s*servername.com
似乎不工作。那麼我該如何忽略0或100或者其他值呢?
此外,如果編輯完成上面,我想循環下面的語句爲同一個文件。如果編輯沒有完成,我想打破循環並繼續下一個文件。
#! /bin/sh
while IF= read dname
do
sed -i -r "s/mail\s*IN*\sCNAME\s*servername.com/mail IN A 8.8.8.8/g" $dname.db
done < dirlist.txt
之後做到這一點,再次假設第一編輯是這樣做,我想編輯第5行,該文件以價值YYYYMMDD09的第一個塊。
#! /bin/sh
while IF= read dname
do
sed -i '5s/.*/\t\t2015121009 ; serial, todays date/' $dname.db
done < dirlist.txt
似乎這樣的伎倆,所以它實際上只是循環和通配符/忽略的數值是不工作的打算。
歡迎堆棧溢出。這是一個問答網站,而不是免費的編碼服務。向我們展示您嘗試過的方式以及卡住的位置,我們很樂意幫助您瞭解如何解決您的問題。 – tripleee
什麼tripleee說。但是對於一些指導,請看日期格式的'man date',其餘的'man awk'。我不會推薦sed這個。 –
Ofc,我覺得真的很愚蠢,我沒有添加它。我現在編輯了這篇文章,包括我的內容。 – guppshouse