本脚本采用的是搭建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