本文共 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/