linux下自动部署DNS脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下自动部署DNS脚本相关的知识,希望对你有一定的参考价值。

说明:

   我用的是红帽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脚本的主要内容,如果未能解决你的问题,请参考以下文章

linux下实现自动部署tomcat的脚本

shell自动部署linux环境下的组件安装配置

shell自动部署linux环境下的组件安装配置

linux下nginx自动部署脚本

linux下nginx自动部署脚本

linux下使用shell脚本自动化部署项目