说明:
我用的是红帽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
原文:http://tdcqvip.blog.51cto.com/12995943/1980923