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

Posted 云来云去-起飞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
		}

 

以上是关于linux (二十五)编写自动化脚本安装DNS单机服务主从服务和卸载服务,以及网卡配置的主要内容,如果未能解决你的问题,请参考以下文章

《Linux命令行与shell脚本编程大全》第二十五章 创建与数据库web及电子邮件相关的脚本

Linux (二十七) PXE 自动装机工具脚本编写

linux脚本自动安装jdkhadoopzookeeper,单机版

Vue 教程(二十五)webpack 安装

API接口自动化测试框架搭建(二十五)-框架主入口main.py设计&sendmail邮件服务调用和生成

十五.编写自动脚本部署web,反向代理,nfs服务