linux (二十五)编写自动化脚本安装DNS单机服务主从服务和卸载服务,以及网卡配置
Posted 云来云去-起飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux (二十五)编写自动化脚本安装DNS单机服务主从服务和卸载服务,以及网卡配置相关的知识,希望对你有一定的参考价值。
目录
一、描述
在上几章内容中已经介绍过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脚本自动安装jdkhadoopzookeeper,单机版