linux (二十五)编写自动化脚本安装DNS单机服务、主从服务和卸载服务,以及网卡配置

目录

一、描述

二、思路及步骤

2.1.创建菜单

2.2.网卡配置

2.3.安装bind

2.4.修改主配置文件

2.5.修改域配置文件

2.6.主服务或单机必须做的区模型文件


一、描述

   在上几章内容中已经介绍过DNS的安装及主从服务的配置,所以在这里就不再做介绍了,我们直接开始撸脚本。

二、思路及步骤

2.1.创建菜单

  • 共有4个功能,代码实现
	function installs(){
	  printf "%-50s\t%-50s\n"  "" "******1.NET8网络配置********" ""  "******2.单机DNS自动安装********" ""  "*******3.主从DNS自动安装********" "" "*******4.卸载DNS服务********"  ;echo ""
	  read -p "请入操作序号:" putn
	  case $putn in
	  	1)
	  	 netUpdate
	  	;;
	  	2)
	  	 installB&&setM&&setRfc
	     systemctl start named
	     netstat -antp | grep 53
	  	;;
	  	3)
	  	 installB&&setM&&setRfc
	     systemctl start named
	     netstat -antp | grep 53
	  	;;
	  	4)
	  	 systemctl stop named
	  	 sleep 5s
	  	 yum remove bind 1>&2
	  	 rm -rf /var/named/*
	  	 echo "卸载成功!!!"
	  	;;
	  	q)
	  	   echo "已退出该工具!"
	  	return
	  	;;
	  	*)
	  	  echo "请输入正确的数字!!!!"
	  	  installs
	  	;;
	  	
	  esac
	 
	}

2.2.网卡配置

    对于安装bind来说,网卡配置很关键,必须连接到外网,否则无法yum安装。

  • 具体实现效果如下:

  • 代码实现如下:
#配置NAT8 的网卡配置,此处只做能连接外网的配置,至于主机模式,暂不考虑
ensPth="/etc/sysconfig/network-scripts/ifcfg-"
function netUpdate(){
	   read -p "请输入你要修改的网卡名称:" ensname
	   read -p "请输入IP地址:" ipname
	   read -p "请继续输入子网掩码:" maskname
	   read -p "请继续输入网关地址:" gname
	   read -p "请继续输入DNS地址:"  dns1
	   enso="${ensPth}${ensname}"
	  
	   printf "%s\n" TYPE=Ethernet BOOTPROT=static DEFROUTE=yes NAME=$ensname DEVICE=$ensname IPADDR=$ipname NETMASK=$maskname GATEWAY=$gname DNS1=$dns1 > ${enso}
	   [ -f ${enso}  ] && echo "网卡文件创建完成" || echo "文件不存在"
	   systemctl restart network
	   ping www.baidu.com 
	   [ $? = 0  ] && echo "成功" || echo "网络配置存在问题"
	}

2.3.安装bind

   这里使用ping 来测试是否能连接外网

#安装bind
function installB(){
	    ping www.baidu.com -c3 
	   [ $? = 0  ] && yum -y install bind || echo "无法连接外网"
	   
	}

2.4.修改主配置文件

#修改named.conf 主配置文件
function setM(){
	  if [[ -f "/etc/named.conf" ]];then
	  echo "开始修改文件"
      #将文件中两个选项设置为any
	  sed  -i -e 's/listen-on port 53 { 127.0.0.1\; }\;/listen-on port 53 { any\; }\;/g' /etc/named.conf  -i -e 's/allow-query     { localhost\; }\;/allow-query     { any\; }\;/g' /etc/named.conf
	  echo "named.conf文件修改完毕"
	else
	   echo "named.conf文件不存在!bind未安装!"
	   return
	  fi
	}

2.5.修改域配置文件

    此处有一两句代码冗余,但是不影响代码执行效率, 此处做了单机配置,主机配置和从配置,当然在主服务器上需要选择主配置,如果在从服务器上选择从配置。

#修改区域文件
varzone=""
function setRfc(){
	 if [[ -f "/etc/named.rfc1912.zones" ]];then
	  read -p "请输入你的域名:" zonename
	  printf "%-50s\t%-50s\n"  "" "******1.单机配置********" ""  "******2.主配置********" ""  "******3.从配置********"   ;echo ""
	  read -p "请选择配置方式,q为返回上级菜单:" input
	  case $input in 
	  	1) 
	      varzone=${zonename}
	      sed  -i -e " 25i zone \"$zonename\"  IN {\n type master;\n file \"${zonename}.zone\";\n allow-update { none; };\n };"  /etc/named.rfc1912.zones
	      echo "rfc1912文件修改完毕"
	      cpZone
	   ;;
	    2)
	     varzone=${zonename}
	     read -p "请输入从服务器的IP地址: " cip
	      sed  -i -e " 25i zone \"$zonename\"  IN {\n type master;\n file \"${zonename}.zone\";\n also-notify { ${cip}; };\n allow-transfer { ${cip}; };\n };"  /etc/named.rfc1912.zones
	      echo "rfc1912文件修改完毕"
       cpZone
	    ;;
	    3)
	     varzone=${zonename}
	     read -p "请输入主服务器的IP地址: " cip
	      sed  -i -e " 25i zone \"$zonename\"  IN {\n type slave;\n file \"slaves\/${zonename}.zone\";\n  masters { ${cip}; };\n };"  /etc/named.rfc1912.zones
	      echo "rfc1912文件修改完毕"
	    ;;
	    q)
	    installs
	    ;;
	    *)
	     echo "输入错误,请重新输入!"
	    ;;
	  esac
	else
	   echo "rfc1912文件不存在!bind未安装!"
	   return
	  fi
	
	}

2.6.主服务或单机必须做的区模型文件

注意:在给文件追加行时,不能存在前后空格,否则在启动时候就会报错,如:“  www  A   192.168.1.1  ” 这样的追加到配置中,就无法启动了得两头去掉空格,如“www  A   192.168.1.1”

#拷贝模型文件到域名文件
	function cpZone(){
		  read -p "请入输入解析的服务ip:" jxip
		  cp  -a /var/named/named.localhost /var/named/${varzone}.zone
		  sleep 10s
		  if [[ -f "/var/named/${varzone}.zone" ]];then
	   echo  "www  A  ${jxip}" >> /var/named/${varzone}.zone
	   echo "zone文件修改完毕"
	else
	   echo "zone文件不存在!"
	   return
	  fi
		}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值