linux下自动部署DNS脚本

简介:

说明:

   我用的是红帽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 变量。




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

56bfced931d3fd553ccff2c4cbc87d47.jpg-wh_



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

相关文章
|
4月前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
479 9
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
454 0
Linux系统初始化脚本
|
4月前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
421 2
|
6月前
|
Web App开发 缓存 安全
Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​
这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。
780 0
|
8月前
|
Java Linux
自定义linux脚本用于快速jar包启动、停止、重启
自定义linux脚本用于快速jar包启动、停止、重启
353 29
|
8月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
247 4
|
8月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
477 3
|
9月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
758 25
|
9月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
686 28
|
10月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。

相关产品

  • 云解析DNS