目的:將多個網域資料,利用script轉入DNS的設定中,減少手動輸入的機會
想法:將欲將入的網域名稱建list為newlist檔,經判別分離可能的主機與網域名稱導為tmp檔
再傳入函式判別是否已存在於記錄中,分別處理
結果:可成功自動轉入,看無法檢查大小寫之差異,等於半自動,但,已減少很多工作了
注意:script shell中最好不要函中文註解
basezone
zone "antizone" {
type master;
file "/var/named/gsnanti/data/antizone.host";
allow-update {none; };
};
basehost
$ttl 38400
antizone. IN SOA dns.khb.gov.tw. root.dns.khb.gov.tw. (
1284022127
10800
3600
604800
38400 )
antizone. IN NS dns.khb.gov.tw.
fullzone. IN A 1.1.1.100
anti.zones
# GSN anti DS
zone "m-music.net" {
type master;
file "/var/named/gsnanti/data/m-music.net.host";
allow-update {none; };
};
gsn
#!/bin/bash
//宣告函式
//基本設定檔basezone及basehost與anti.zones
//導入二個參數
function append_data()
{
var1=$1
var2=$2
if grep $var1 anti.zones > /dev/null; //檢驗參數值是否已存在,並將比對的結果回應值導至null
then
echo "Domain $var1 exists"
echo "$var2. IN A 1.1.1.100″ >> data/$var1.host
else
sed -e ‘s/antizone/’"$var1″‘/g’ basezone >> anti.zones
sed -e ‘s/antizone/’"$var1″‘/g’ basehost | sed ‘s/fullzone/’"$var2″‘/g’ > data/$var1.host
fi
}
//下列主要目的是將newlist中所含網域名稱,利用awk分解為List,再轉入tmp檔
cat newlist | awk ‘BEGIN {FS="."}{if (NF==2) printf $0″,"$0″\n"}
{if (NF==3) printf $(NF-1)"."$NF","$0″\n"}
{if (NF>=4) printf $(NF-2)"."$(NF-1)"."$NF","$0″\n"}’ >> tmp
//以cut將tmp內主機及網域資料導入矩陣中,再將矩陣傳入函式中
sel_1=($(cut -d "," -f1 tmp))
sel_2=($(cut -d "," -f2 tmp))
se1=${#sel_1[@]} // 取矩陣大小
for ((i=0;i<=$se1-1;i=i+1))
do
append_data "${sel_1[$i]}" "${sel_2[$i]}"
done