博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下自动部署DNS脚本
阅读量:6219 次
发布时间:2019-06-21

本文共 2839 字,大约阅读时间需要 9 分钟。

说明:

   我用的是红帽6.5系统,IP是172.24.10.107 能够ping通外网,虽然在实际中没什么用,但是对于学习shell编程和学校里的考试还是非常有用的,废话不多说,上代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/bash
#2017-11-11
#by-
#centos6.5
 
name=
"duwentao.com"
rip=10.24.172
ip=172.24.10.107
ip_last=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.
$ip_last   IN    PTR     www.$name.
$ip_last   IN    PTR     mail.$name.
 
+END+
 
 
chgrp 
named $named        
chgrp 
named $zheng
chgrp 
named $fan
 
echo 
"nameserver $ip" 
>> 
/etc/resolv
.conf
service named restart


执行过程:


本程序涉及的我认为重要的部分

1,if 语句  

1
2
3
4
5
if 
[ ] ; 
then
     
语句1
 
else
     
语句2
fi

2,插入语句

1
2
3
4
5
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 变量。


欢迎关注我微信公众号,与我一起学习

本文转自 天道酬勤VIP 51CTO博客,原文链接:http://blog.51cto.com/tdcqvip/1980923

转载地址:http://ualja.baihongyu.com/

你可能感兴趣的文章
使用Javascript显示时间
查看>>
信号量与线程互斥锁的区别
查看>>
Android控件系列之XML静态资源
查看>>
【C#学习笔记】获得本机IP
查看>>
Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role
查看>>
Windows Mobile下native c++ typeid的使用
查看>>
用ASP.NET写个SQLSERVER的小工具
查看>>
dojo 官方翻译 dojo/string 版本1.10
查看>>
flex for循环
查看>>
生活中的经典感人语句
查看>>
JavaScript常用字符串函数
查看>>
数据交换格式XML和JSON对比
查看>>
强烈推荐Oracle的入门心得
查看>>
POJ 1195 Mobile phones (二维树状数组或线段树)
查看>>
LINUX下使用crontab进行RMAN备份实验
查看>>
Hive文件格式
查看>>
[LeetCode] Delete Node in a Linked List
查看>>
农历js脚本
查看>>
获取对象的 RTTI 属性与事件的函数
查看>>
java获得CPU使用率,系统内存,虚拟机内存等情况
查看>>