【shell脚本】全自动完成pxe无人值守批量装机脚本,匹配centos系列
本脚本采用的是搭建ftp服务器、tftp服务器、dhcp服务器来完成文件的传输
ks应答文件为最小化安装,免去图形化,可以实现一键装机~~
#!/bin/bash
yum -y install tftp-server dhcp vsftpd syslinux &> /dev/null
###脚本说明:需要输入dhcp地址池的最小主机编号和最大主机编号,请仔细阅读,并按要求赋值
IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.
read -p "请输入地址池最小主机号:" min
read -p "请输入地址池最大主机号:" max
#修改分配网段地址,指定服务器地址(本机IP),指定pxelinux.0引导程序文件
echo "subnet ${NET}0 netmask 255.255.255.0 {
range ${NET}${min} ${NET}${max};
option routers ${IP};
next-server ${IP};
filename \"pxelinux.0\";
}" > /etc/dhcp/dhcpd.conf
#开启dhcp服务
systemctl start dhcpd
#开启TFTP服务,准备四大文件
sed -i "14 s/yes/no/" /etc/xinetd.d/tftp
mkdir /var/ftp/centos7
mount /dev/sr0 /var/ftp/centos7
#复制内核文件即初始化镜像文件到TFTP根目录下
cp /var/ftp/centos7/isolinux/vmlinuz /var/lib/tftpboot/
cp /var/ftp/centos7/isolinux/initrd.img /var/lib/tftpboot/
#复制pxelinux.0引导程序到TFTP根目录下
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
#准备ks应答文件到ftp服务器上
echo "install
keyboard 'us'
rootpw --plaintext 123
url --url=\"ftp://$(ifconfig ens33|grep netmask|tr -s " "|cut -d " " -f3)/centos7\"
lang en_US
firewall --disabled
auth --useshadow --passalgo=sha512
text
selinux --disabled
skipx
reboot
timezone Africa/Abidjan
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype=\"xfs\" --size=4096
part swap --fstype=\"swap\" --size=4096
part / --fstype=\"xfs\" --grow --size=1
%post --interpreter=bash
useradd xueyin
echo \"123456\"|passwd --stdin xueyin
%end" > /var/ftp/ks.cfg
mkdir /var/lib/tftpboot/pxelinux.cfg
echo "default linux
timeout 60
label linux
kernel vmlinuz
append initrd=initrd.img method=ftp://${IP}/centos7 ks=ftp://${IP}/ks.cfg
" > /var/lib/tftpboot/pxelinux.cfg/default
#开启tftp服务和ftp服务
systemctl start tftp
systemctl start vsftpd
#关闭防火墙和增强型安全机制,我电脑已经设置默认永久关闭的
systemctl stop firewalld.service
setenforce 0