shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!
Posted 码海小虾米_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!相关的知识,希望对你有一定的参考价值。
一键部署PXE
1. 编写脚本情况分析
- 部署之前检查tftp-server、xinetd是否安装,没有安装则进行安装,安装失败会退出;
- 进行一键部署dhcp服务,将本机作为dhcp服务器,并开启服务;
- 判断syslinux、vsftpd程序是否安装,没有安装则进行安装,安装失败会退出;
- 然后对配置文件进行修改。
2. 脚本代码部分
#!/bin/bash
# 一键部署PXE自动装机
# 检查tftp-server是否安装
if rpm -q tftp-server &> /dev/null
then
continue
else
if yum install -y tftp-server &> /dev/null
then
continue
else
echo -e "\\033[31;5m tftp-server安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
# 检查xinetd是否安装
if rpm -q xinetd &> /dev/null
then
continue
else
if yum install -y xinetd &> /dev/null
then
continue
else
echo -e "\\033[31;5m xinetd安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
# 修改tftp配置文件
sed -i '14 s/yes/no/' /etc/xinetd.d/tftp
# 判断tftp服务是否开启
if systemctl restart tftp &> /dev/null
then
# 判断xinetd服务是否开启
if systemctl restart xinetd &> /dev/null
then
continue
else
echo -e "\\033[31;5m xinetd启动失败,已退出! \\033[0m"
exit
fi
echo -e '\\033[34m tftp和xinetd服务安装启动完成!已设置开机自启动!\\033[0m'
else
echo -e "\\033[31;5m tftp启动失败,已退出! \\033[0m"
exit
fi
#!/bin/bash
#一键部署dhcp服务
# 判断光盘是否挂载到mnt目录下
if find /mnt/images/pxeboot/ -name "vmlinuz" &> /dev/null
then
continue
else
echo -e "\\033[31;5m 光盘未挂载或未挂载到/mnt目录! \\033[0m"
exit
fi
# 判断bind程序是否安装
if rpm -q dhcp &> /dev/null
then
continue
else
if yum install -y dhcp &> /dev/null
then
continue
else
echo -e "\\033[31;5m dhcp安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
# 修改dhcp配置文件
/bin/cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
sed -i '14 s/#//' /etc/dhcp/dhcpd.conf
ip=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | awk -F= '{print $2}'
`
sed -i '/ddns-update-style/a\\next-server '$ip';' /etc/dhcp/dhcpd.conf
sed -i '/next-server/a\\filename "pxelinux.0";' /etc/dhcp/dhcpd.conf
host=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | awk -F= '{print $2}' | awk -F. '{print $4}'
`
sed -i '34 s/10.254.239.0/'$ip'/' /etc/dhcp/dhcpd.conf
sed -i '34 s/'$host'/0/' /etc/dhcp/dhcpd.conf
sed -i '34 s/255.224/255.0/' /etc/dhcp/dhcpd.conf
sed -i '35 s/10.254.239.10/'$ip'/' /etc/dhcp/dhcpd.conf
sed -i '35 s/'$host'/100/' /etc/dhcp/dhcpd.conf
sed -i '35 s/10.254.239.20/'$ip'/' /etc/dhcp/dhcpd.conf
sed -i '35 s/'$host'/200/' /etc/dhcp/dhcpd.conf
sed -i '36 s/rtr-239-0-1.example.org, rtr-239-0-2.example.org/'$ip'/' /etc/dhcp/dhcpd.conf
# 判断dhcp服务是否开启
if systemctl restart dhcpd &> /dev/null
then
echo -e '\\033[34m dhcpd服务安装启动完成!已设置开机自启动!\\033[0m'
else
echo -e "\\033[31;5m dhcpd启动失败,已退出! \\033[0m"
exit
fi
/bin/cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
/bin/cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
# 判断syslinux程序是否安装
if rpm -q syslinux &> /dev/null
then
continue
else
if yum install -y syslinux &> /dev/null
then
continue
else
echo -e "\\033[31;5m syslinux安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
/bin/cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# 判断vsftpd程序是否安装
if rpm -q vsftpd &> /dev/null
then
continue
else
if yum install -y vsftpd &> /dev/null
then
continue
else
echo -e "\\033[31;5m vsftpd安装失败,请检查yum源是否正常! \\033[0m"
exit
fi
fi
mkdir /var/ftp/centos7
echo -e "\\033[35;5m 正在复制镜像,请等待......... \\033[0m"
/bin/cp -rf /mnt/* /var/ftp/centos7/
# 判断vsftpd服务是否开启
if systemctl restart vsftpd &> /dev/null
then
echo -e '\\033[34m syslinux和vsftpd服务启动完成!已设置开机自启动!\\033[0m'
else
echo -e "\\033[31;5m vsftpd启动失败,已退出! \\033[0m"
exit
fi
mkdir /var/lib/tftpboot/pxelinux.cfg
echo 'default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://'$ip'/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://'$ip'/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://'$ip'/centos7
' > /var/lib/tftpboot/pxelinux.cfg/default
systemctl stop firewalld
setenforce 0 &> /dev/null
echo -e '\\033[36m pxe一键装机部署完毕!请开始你的表演!\\033[0m'
3. 实验部分
以上是关于shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!的主要内容,如果未能解决你的问题,请参考以下文章
shell脚本之一键部署zookeeper集群服务,能用脚本解决的事情,绝对不手敲。