使用免交互一键进行PXE批量装机

bash
#!/bin/bash

#先磁盘判断是否挂载,并检查tftp和xinetd软件包是否安装
df | grep "sr0"
if [ $? -eq 0 ];then
  yum install -y tftp-server xinetd
else
  mount /dev/cdrom /mnt
  yum install -y tftp-server xinetd
fi

#修改TFTP服务的配置文件:/etc/xinetd.d/tftp
sed -i 's/yes/no/g'  /etc/xinetd.d/tftp    #将该配置文件中的no全部改成yes,以达到多台客户机一起安装和开启TFTP服务的目的

#开启TFTP服务
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd

#安装并启用DHCP服务与ecpect
yum install -y dhcp expect 

#复制配置文件,进行免交互操作
/usr/bin/expect <<EOF
spawn cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
expect "是否覆盖"/etc/dhcp/dhcpd.conf"?" {send "yes\r"}
interact
EOF

#修改DHCP服务配置文件:/etc/dhcp/dhcpd.conf
cat >/etc/dhcp/dhcpd.conf <<FOE    #使用Here Document进行免交互设置
ddns-update-style none;            #禁用DNS动态更新,提高效率
next-server 192.168.200.10;        #指定TFTP服务器的地址
filename "pxelinux.0";             #指定PXE引导程序的文件名
subnet 192.168.200.0 netmask 255.255.255.0 {       #声明要分配的网段地址
range 192.168.200.100 192.168.200.200;             #设置地址池
option routers 192.168.200.10;                     #设置默认网关地址,指向TFTP服务器的IP地址
}
FOE


#开启DHCP服务
systemctl start dhcpd
systemctl enable dhcpd

#准备Linux内核与初始化镜像文件
cd  /mnt/images/pxeboot             #已事先把光盘挂载到/mnt目录中
cp vmlinuz  /var/lib/tftpboot       #复制Linux系统的内核文件到TFTP根目录下
cp  initrd.img   /var/lib/tftpboot/  #复制初始化镜像文件(linux引导加载模块)到TFTP根目录下


#准备PXE引导程序
yum -y install syslinux         #PXE引导程序由软件包syslinux提供
cp /usr/share/syslinux/pxelinux.0   /var/lib/tftpboot/      #复制PXE引导程序到TFTP根目录下


#安装并启用FTP服务,准备centos 7 安装源
yum  -y  install  vsftpd
mkdir  /var/ftp/centos7
cp   -rf    /mnt/*   /var/ftp/centos7/

systemctl  start   vsftpd
systemctl  enable vsftpd


#配置启动菜单文件
mkdir   /var/lib/tftpboot/pxelinux.cfg
touch /var/lib/tftpboot/pxelinux.cfg/default
cat >/var/lib/tftpboot/pxelinux.cfg/default << ABC
default  auto          #指定默认入口名称
prompt 0               #设置是否等待用户选择, "1"表示等待用户控制,”0“表示不等待用户控制

label   auto           # 图形安装(默认)引导入口, label用来定义启动项
kernel vmlinuz         #kernel 和 append用来定义引导参数
append  initrd=initrd.img  method=ftp://192.168.200.10/centos7

label linux text       #文本安装引导入口
kernel  vmlinuz
append text initrd=initrd.img   method=ftp://192.168.200.10/centos7

label linux rescue      #救援模式引导入口
kernel vmlinuz
append  rescue initrd=initrd.img  method=ftp://192.168.200.10/centos7
ABC

#关闭防火墙
systemctl stop firewalld.service
setenforce 0

猜你喜欢

转载自blog.csdn.net/Gengchenchen/article/details/111877404
今日推荐