第一步:关闭防火墙,部署本地yum源
#关闭防火墙和selinux服务的函数
stopd (){
systemctl stop firewalld
if [ $? -eq 0 ];then
echo "防火墙关闭成功!"
fi
setenforce 0
}
#进行yum本地源仓库搭建的函数
cangku (){
mount /dev/sr0 /mnt &>/dev/null
cd /etc/yum.repos.d
mkdir repo.bak
mv *.repo ./repo.bak
echo "
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
enabled=1 ">local.repo
yum clean all && yum makecache &>/dev/null
if [ $? -eq 0 ];then
echo "元数据已建立!"
fi
}
第二步:下载pxe要用到的服务软件包
#下载相关服务的函数
download(){
yum install -y dhcp tftp-server vsftpd syslinux &>/dev/null
yum install -y xinetd
if [ $? -eq 0 ];then
echo "相关的服务运用下载完毕!"
fi
systemctl restart vsftpd &>/dev/null
if [ $? -eq 0 ];then
echo " ftp服务启动成功!"
fi
}
第三步:通过传参自定义dhcp配置
#配置dhcp并启动dhcp的函数
xdhcp (){
\cp -f -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
local i=$1
local a=$2
local b=$3
local c=$4
local d=$5
echo "
subnet $i netmask $a {
range $b $c;
option routers $d;
next-server $d;
filename "pxelinux.0";
} " >>/etc/dhcp/dhcpd.conf
sed -i 's/pxelinux.0/"pxelinux.0"/' /etc/dhcp/dhcpd.conf
systemctl restart network
systemctl restart dhcpd &>/dev/null
if [ $? -eq 0 ];then
echo "dhcp服务启动成功!"
fi
}
第四步:搭建tftp站点
#搭建tftp站点
tftpd (){
tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}')
sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp
systemctl restart xinetd &>/dev/null
systemctl restart tftp &>/dev/null
if [ $? -eq 0 ];then
echo "tftp服务启动成功!"
fi
}
第五步: 重新挂载镜像光盘,编写pxe装机必备文件
#重新挂载光盘安放三大文件
centos7(){
local e=$1
mkdir -p /var/ftp/centos7
mount /dev/sr0 /var/ftp/centos7 &>/dev/null
cp -p /var/ftp/centos7/isolinux/initrd.img /var/lib/tftpboot
cp -p /var/ftp/centos7/isolinux/vmlinuz /var/lib/tftpboot
cp -p /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
mkdir -p /var/lib/tftpboot/pxelinux.cfg
echo "
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://$e/centos7
label text
kernel text vmlinuz
append text initrd=initrd.img method=ftp://$e/centos7
label rescue
kernel rescue vmlinuz
append rescue initrd=initrd.img method=ftp://$e/centos7
" >/var/lib/tftpboot/pxelinux.cfg/default
}
第六步:主代码实现区,调用函数方法
###########################main############################
stopd
cangku
download
echo " dhcpd服务配置文件如下:
##############################################################################
# #
# subnet 网段(IP) netmask 子网掩码(netmask){ #
# range 指定的网络池范围起始IP(IP1) 范围的终止IP(IP2); #
# option routers DHCP服务器的网关(IP3); #
# next-server 指定的tftp服务器(IP3); #
# filename "pxelinux.0"; #
# } #
# #
##############################################################################
"
read -p "请输入本机的IP网段: " IP
read -p "请输入本机的子网掩码:" netmask
read -p "请入要配置的网络池的范围(起始IP):" IP1
read -p "请入要配置的网络池的范围(终止IP):" IP2
read -p "请入要配置的dhcp的网关(及其tftp的指定服务器):" IP3
xdhcp $IP $netmask $IP1 $IP2 $IP3
tftpd
centos7 $IP3