以下脚本所涉及到的服务有
IP:dhcp
dns:bind
Web:apache
#!/bin/bash
echo "#################################################"
echo "## 一键部署dhcp+dns+apache服务注意事项 ###"
echo "## 1:只要你跟着来,实验绝对没问题 ###"
echo "## 2:如果需要查看日志请打开/1.txt ###"
echo "## 3:前面可能会需要你操作, ###"
echo "## Apache服务就轻松了 ###"
echo "## 4:DNS是从域名服务器本人已经尝试成功 ###"
echo "#################################################"
setenforce 0
systemctl stop firewalld
read -p 脚本即将开始,请问您准备好了吗(yes/no) a
if [ $a = yes ];then
echo -e "\033[32m那么咱们走起~\033[0m"
elif [ $a = no ];then
echo -e "\033[31m既然你没有准备好,那在等等\033[0m"
exit 0
else
printf "\033[1;31;40m竟然不选择,从来老铁\n\033[0m"
exit 0
fi
###########配置网卡信息##########
echo -e "\033[34m请配置本机网卡基本信息...\033[0m"
mask=255.255.255.0
read -p "输入网卡接口名称:" ens
read -p "输入IP地址:" ip
echo -e "\033[33m子网掩码已默认为:255.255.255.0\033[0m"
read -p "输入网关地址:" route
read -p "输入首选DNS地址:" dns
ifc="/etc/sysconfig/network-scripts/ifcfg-"
echo "DEVICE=$ens" > $ifc$ens
echo "TYPE=Ethernet" >> $ifc$ens
echo "BOOTPROTO=static" >> $ifc$ens
echo "ONBOOT=yes" >> $ifc$ens
echo "IPADDR=$ip" >> $ifc$ens
echo "NETMASK=$mask" >> $ifc$ens
echo "GATEWAY=$route" >> $ifc$ens
echo "DNS1=$dns" >> $ifc$ens
systemctl restart network
if [ $? -eq 0 ];then
echo -e " 基本信息 \033[32m 配置成功 \033[0m "
else
echo -e " 基本信息 \033[31m 配置失败 \033[0m "
fi
###########搭建YUM仓库##########
echo -e "\033[34m正在搭建yum源中...\033[0m"
rm -rf /etc/yum.repos.d/*
read -p 请输入您所搭建的yum文件名(例:yum.repo) b
#其余的名字你就不用管了
echo "[123]" > /etc/yum.repos.d/$b
echo "name=hauizhe" >> /etc/yum.repos.d/$b
read -p 请选择您所搭建的YUM源为哪种类型(file,ftp,http) c
if [ $c = file ];then
printf "\033[1;31;40m虚拟机中光盘已连接了吗?现在连接还来得及\033[0m"
echo ""
read -p 请选择您光盘的挂载目录(例:/media) d
cd $d &>/1.txt
if [ $? -eq 0 ];then
echo -e "\033[31m目录已选择成功\033[0m"
echo "baseurl=$c://$d" >> /etc/yum.repos.d/$b
else
echo -e "\033[31m目录不存在,正在创建...\033[0m"
mkdir -p $d
printf "\033[4;32;50m创建目录完毕\033[0m"
echo "baseurl=$c://$d" >> /etc/yum.repos.d/$b
fi
mount /dev/cdrom $d &>/1.txt
printf "光盘已挂载成功"
elif [ $c = ftp ];then
echo -e "\033[31m你要确保ftp源可以使用呦~\033[0m"
read -p 请输入ftp服务器地址 f
echo "baseurl=$c://$f" >> /etc/yum.repos.d/$b
elif [ $c = http ];then
echo -e "\033[31m你要确保http源可以使用呦~\033[0m"
read -p 请输入http服务器地址 e
echo "baseurl=$c://$e" >> /etc/yum.repos.d/$b
else
printf "\033[1;31;40m什么都不选,你还想搭建???\033[0m"
exit 0
fi
echo "enable=1" >> /etc/yum.repos.d/$b
echo "gpgcheck=0" >> /etc/yum.repos.d/$b
echo -e "\033[32mYUM源搭建完毕\033[0m"
###########配置DHCP服务器##########
echo -e "\033[34m正在搭建DHCP服务中...\033[0m"
yum -y install dhcp &>/1.txt
read -p 请输入dhcp所分配的网段(例如:192.168.1.0) g
if [ -z $g ]
then
echo "退出脚本"
break
else
read -p 请输入网段所属子网掩码 h
echo "subnet $g netmask $h {" >> /etc/dhcp/dhcpd.conf
printf "\033[1;31;40m正在确认dhcp服务器所分配的网段\n\033[0m"
read -p "请输入开始网段ip:" i
read -p "请输入结束网段IP:" j
echo " range $i $j;" >> /etc/dhcp/dhcpd.conf
read -p "请输入dns服务器地址:" k
echo " option domain-name-servers $k;" >> /etc/dhcp/dhcpd.conf
read -p "请输入域名(如:www.baidu.com):" l
if [ -z $l ]
then
echo " option domain-name \"internal.example.org\";" >> /etc/dhcp/dhcpd.conf
else
echo " option domain-name \"$l\";" >> /etc/dhcp/dhcpd.conf
fi
read -p "请输入默认网关:" m
echo " option routers $m;" >> /etc/dhcp/dhcpd.conf
echo "}" >>/etc/dhcp/dhcpd.conf
fi
echo -e "\033[33m配置完毕,正在启动dhcp服务器\033[0m"
systemctl start dhcpd
if [ $? -eq 0 ]
then
printf "\033[1;32;40m启动DHCP服务器成功\n\033[0m"
else
printf "\033[1;31;40m启动DHCP服务器失败\n\033[0m"
fi
###########配置DNS服务器##########
echo -e "\033[34m正在搭建DNS服务中...\033[0m"
yum -y install bind &>>/1.txt
read -p 需要您输入下允许使用DNS服务的网段(例:any,192.168.1.0) q
sed -i "/listen/s/127.0.0.1/$ip/" /etc/named.conf
if [ $q = any ];then
sed -i "/allow/s/localhost/$q/" /etc/named.conf
else
sed -i "/allow/s/localhost/$q\/24/" /etc/named.conf
fi
echo -e "\033[31m正在建立正向区域\033[0m"
read -p 请您输入下正向区域(例:baidu.com) w
echo "zone \"$w\" IN {" >>/etc/named.rfc1912.zones
read -p 请您确认下当前DNS服务器为主域名服务器吗?(yes/no) r
if [ $r = yes ];then
echo "type master;" >>/etc/named.rfc1912.zones
elif [ $r = no ];then
echo "type slave;" >>/etc/named.rfc1912.zones
read -p 那主域名服务器地址为? t
echo "masters { $t; };" >>/etc/named.rfc1912.zones
else
echo "type master;" >>/etc/named.rfc1912.zones
printf "\033[1;32;40m你竟然不选,那就是主\033[0m"
fi
read -p 请您设置下正向区域文件的名称(例如:b) y
echo "file \"$y\";" >>/etc/named.rfc1912.zones
#注意:如果你是从服务器,最好使用如下格式(最终成不成看的是nslookup)
#file "目录(slaves)/同步过来后的正向区域文件名(自己起)"; 你可以去/var/named/查看“slaves目录”并查看是否同步成功(但其实它是你重启named后生成的!)
read -p 请你设置下允许哪个从服务器下载区域文件(例:192.168.1.1,any) u
echo "allow-update { $u; };">>/etc/named.rfc1912.zones
echo "};" >>/etc/named.rfc1912.zones
echo -e "\033[31m正在建立反向区域\033[0m"
read -p 请您输入下反向区域(例:1.168.192) i
echo "zone \"$i.in-addr.arpa\" IN {" >>/etc/named.rfc1912.zones
read -p 请您确认下当前DNS服务器为主域名服务器吗?(yes/no) o
if [ $o = yes ];then
echo "type master;" >>/etc/named.rfc1912.zones
elif [ $o = no ];then
echo "type slave;" >>/etc/named.rfc1912.zones
echo "masters { $t; };" >>/etc/named.rfc1912.zones
else
echo "type master;" >>/etc/named.rfc1912.zones
printf "\033[1;32;40m你竟然不选,那就是主\033[0m"
fi
read -p 请您设置下反向区域文件的名称(例如:d) p
echo "file \"$p\";" >>/etc/named.rfc1912.zones
#注意:如果你是从服务器,类上↑↑↑
read -p 请你设置下允许哪个从服务器下载区域文件(例:192.168.1.1,any) aa
echo "allow-update { $aa; };">>/etc/named.rfc1912.zones
echo "};" >>/etc/named.rfc1912.zones
###########编辑正反向区域数据文件
if [ $r != no ];then
cd /var/named/
cp -p named.localhost $y
cp -p named.loopback $p
#如果你是从服务器的话,这一步你就不用看了(从服务器不需要编辑,他是将区域数据文件同步过来的~)
sed -i '9,10d' $y
sed -i "/NS/s/@/$l./" $y
sed -i "/NS/awww A $ip" $y #具体的主机名(www)我就不换了,你也累了对吧!!!
sed -i '9,11d' $p
sed -i "/NS/s/@/$l./" $p
bb=$(ifconfig ens33 | grep 'inet ' | awk '{print $2'} | awk -F '.' {'print $4'})
sed -i "/NS/a$bb PTR $l." $p
fi
echo -e "\033[33m配置完毕,正在启动DNS服务器\033[0m"
systemctl restart named &>>/1.txt
if [ $? -eq 0 ]
then
printf "\033[1;32;40m启动DNS服务器成功\n\033[0m"
else
printf "\033[1;31;40m启动DNS服务器失败\n\033[0m"
fi
###########安装Apache服务##########
echo -e "\033[34m正在搭建Apache服务中...\033[0m"
read -p 执行安装apace之前请先将相应的软件包(2.4.25)拉入到当前目录下
rpm -qa | grep httpd
if [ $? -eq 0 ]
then
rpm -e --nodeps httpd
fi
echo "解压安装包"
tar -zxvf httpd-2.4.25.tar.gz -C /usr/src/ >> /tmp/apache.txt
echo "安装前置软件"
yum -y install apr* pcre* &>>/tmp/apache.txt
cd /usr/src/httpd-2.4.25/
echo "配置编译并安装"
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi &>>/tmp/apache.txt
make &>>/tmp/apache.txt
make install &>>/tmp/apache.txt
echo "修改主配置文件"
read -p "请输入域名(例如:www.hws.com):" ym
if [ ! -z $ym ]
then
sed -i "s/#ServerName www.example.com:80/ServerName $ym:80/" /usr/local/httpd/conf/httpd.conf
fi
read -p "请输入端口号(默认为80):" dkh
if [ ! -z $dkh ]
then
sed -i "s/ServerName $ym:80/ServerName $ym:$dkh/" /usr/local/httpd/conf/httpd.conf
fi
echo "优化启动路径"
ln -s /usr/local/httpd/bin/* /usr/local/bin/ &>> /tmp/apache.txt
echo "复制并编辑"
cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd &>> /tmp/apache.txt
sed -i "2a #chkconfig:35 85 21" /etc/init.d/httpd
chkconfig --add httpd
<<COMMAND
echo "[Unit]" >> /lib/systemd/system/httpd.service
echo "Description=The Ahache HTTP Server" >>/lib/systemd/system/httpd.service
echo "After=network.target" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "[Service]" >>/lib/systemd/system/httpd.service
echo "Type=forking" >>/lib/systemd/system/httpd.service
echo "PIDFile=/usr/local/httpd/logs/httpd.pid" >>/lib/systemd/system/httpd.service
echo "ExecStart=/usr/local/bin/apachectl" >>/lib/systemd/system/httpd.service
echo "ExecReload=/bin/kill -HUP" >>/lib/systemd/system/httpd.service
echo "KillMode=process" >>/lib/systemd/system/httpd.service
echo "Restart=on-failure" >>/lib/systemd/system/httpd.service
echo "RestartSec=42s" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "" >>/lib/systemd/system/httpd.service
echo "[Install]" >>/lib/systemd/system/httpd.service
echo "WantedBy=graphical.target" >>/lib/systemd/system/httpd.service
echo https://blog.csdn.net/qq_50573146?spm=1000.2115.3001.5113 >>/usr/local/httpd/htdocs/index.html >/usr/local/httpd/htdocs/index.html
COMMAND
sed -i 's/It works!/huaizhe ban/' /usr/local/httpd/htdocs/index.html
echo "正在启动服务"
systemctl start httpd &>/1.txt
if [ $? -eq 0 ]
then
printf "\033[1;32;40m启动apache服务成功\n\033[0m"
else
printf "\033[1;31;40m启动apache服务失败\n\033[0m"
fi
echo -e "\033[33m此脚本到此圆满成功\033[0m"
It doesn’t matter if you don’t play well in the first half of your life.