1. 程式人生 > >linux下自動部署DNS腳本

linux下自動部署DNS腳本

shell dns linux

說明:

我用的是紅帽6.5系統,IP是172.24.10.107 能夠ping通外網,雖然在實際中沒什麽用,但是對於學習shell編程和學校裏的考試還是非常有用的,廢話不多說,上代碼:

#!/bin/bash
#2017-11-11
#by-
#centos6.5

name="duwentao.com"
rip=10.24.172
ip=172.24.10.107
named="/etc/named.conf"
zheng="/var/named/$name.zone"
fan="/var/named/$rip.in-addr.arpa.zone"


#判斷DNS軟件是否安裝,如果安裝了,就卸載再安裝,如果沒安裝就安裝
if [ ! -f $named  ];then
	yum install bind* -y
else
	yum remove bind* -y
	yum install bind* -y 
fi

#配置主配文件
rm -rf $named
touch $named
cat >> $named << +END+
options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };
	recursion yes;

	dnssec-enable no;
	dnssec-validation no;

	/* Path to ISC DLV key */
	bindkeys-file "/etc/named.iscdlv.key";

	managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "$name" IN{
	type master;
	file "$zheng";

};

zone "$rip.in-addr.arpa" IN{
	type master;
	file "$fan";

};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

+END+


#配置正向解析文件
if [ ! -f $zheng  ];then
	touch $zheng
else
	rm -rf $zheng
	touch $zheng
fi

cat >> $zheng << +END+
\$TTL 1D
@	IN SOA	 $name.  root.$name. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@     IN     NS     dns.smile.com.
dns   IN     A      $ip
mail  IN     A      $ip
www   IN     A      $ip

+END+

#配置反向解析文件
if [ ! -f $fan  ];then
        touch $fan
else
        rm -rf $fan
        touch $fan
fi


cat >> $fan << +END+

\$TTL 86400
@	IN SOA	 $rip.in-addr.arpa. root.$name. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@     IN     NS     dns.$name.
107   IN    PTR     www.$name.
107   IN    PTR     mail.$name.

+END+


chgrp named $named        
chgrp named $zheng
chgrp named $fan

echo "nameserver 172.24.10.107" >> /etc/resolv.conf
service named restart



執行過程:


本程序涉及的我認為重要的部分


1,if 語句

if [ ] ; then
     語句1
 else
     語句2
fi


2,插入語句

cat >> 文件 << +END+

   要插入的語句  註意cat >> 是追加 cat > 是把源文件裏的內容清空再加

+END


3,邏輯運算符

-f
判斷文件是否存在eg: if [ -f filename ]
-d判斷目錄是否存在eg: if [ -d dir ]

4,變量

shell 編程語言是非類型的解釋語言,shell給一個變量賦值,實際上 就是定義了變量,在linux支持的所有shell中,都可以用(=)為變量賦值。

SHELL 變量可分為兩類:局部變量和環境變量。局部變量只在創建它們的 shell 腳本中使用。而環境變量則可以在創建它們的 shell及其派生出來的任意子進程中使用。有些變量是用戶創建的,其他的則是專用 shell 變量。




歡迎關註我微信公眾號,與我一起學習

技術分享

本文出自 “天道酬勤” 博客,請務必保留此出處http://tdcqvip.blog.51cto.com/12995943/1980923

linux下自動部署DNS腳本