说明:
我用的是红帽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