Shell script-fast desktop makeup machine | PXE cooperates with Kickstart to realize unattended automatic installation

Shell Script-Quick Desktop Makeup Machine

#!/bin/bash
function tftp(){
    
    
	echo "正在修改 tftp 服务配置文件>"
	sed -i 's/yes/no/g' /etc/xinetd.d/tftp
	echo "tftp 服务配置文件已经修改完毕!"
	systemctl start tftp;
	systemctl start xinetd
}
echo "即将开始安装 PXE ,在此期间请勿执行其他操作>"
rpm -q tftp-server xinetd &> /dev/null
bool=$?
if (($bool >= "1"))
	echo "正在检测是否安装 tftp | xinetd 软件包>"
then 
	yum -y install tftp-server xinetd &> /dev/null
	echo "tftp-server | xinetd 已经安装完毕!"
	tftp
else 
	tftp
fi

#第二部分检测安装dhcp并修改配置文件
export getIP=`ifconfig | grep "inet" | awk 'NR==1 {print $2}'`

function dhcp(){
    
    
	\cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
	echo  "
ddns-update-style none;
next-server $getIP;
	" >> /etc/dhcp/dhcpd.conf
	echo '
filename "pxelinux.0";
	' >> /etc/dhcp/dhcpd.conf
	
	read -p "输入你当前的网段:" input_1
	read -p "输入你网段的子网掩码:" input_2
	read -p "输入你的首地址池:" input_3
	read -p "输入你的尾地址池:" input_4
	echo "
subnet $input_1 netmask $input_2{
  range $input_3 $input_4;
  option routers $getIP;
}
	" >> /etc/dhcp/dhcpd.conf
}

rpm -q dhcp &> /dev/null
bool=$?
if (($bool == "1"))
	echo "正在检测是否安装 dhcp 软件包>"
then
	yum -y install dhcp &> /dev/null
	echo "dhcp 已经安装完毕!"
	dhcp
	echo "正在修改 dhcp 服务配置文件>"
	echo "dhcp 服务配置文件已经修改完毕!"
	systemctl start dhcpd
fi

mount /dev/cdrom /mnt &> /dev/null
echo "正在将 initrd.img 复制到 tftp 中>"
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot
echo "复制完毕!"
echo "正在将 vmlinuz 复制到 tftp 中>"
cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot
echo "复制完毕!"

function syslinux(){
    
    
	yum -y install syslinux &> /dev/null
	cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
	echo "syslinux 的 pxelinux.0 以复制到 tftpboot 中!"
	
	mkdir /var/lib/tftpboot/pxelinux.cfg
	echo "pxelinux.cfg 以创建成功!"
	echo " 
default auto
prompt 0						

label auto							
append initrd=initrd.img method=ftp://$getIP/centos7

label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://$getIP/centos7 ks=ftp://$getIP/ks.cfg

label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://$getIP/centos7
" > /var/lib/tftpboot/pxelinux.cfg/default
}

rpm -q syslinux &> /dev/null
bool=$?
if (($bool == "1"))
	echo "正在检测是否安装 syslinux 软件包>"
then
	syslinux
fi

rpm -q vsftpd &> /dev/null
bool=$?
if (($bool == "1"))
	echo "正在检测是否安装 vsftp 软件包>"
then
	yum -y install vsftpd &> /dev/null
	echo "vsftp 已经安装完毕!"
	mkdir /var/ftp/centos7
	echo "目录 /var/ftp/centos7 创建成功!"
	mount /dev/cdrom /var/ftp/centos7/
	echo "已将镜像挂载至 /var/ftp/centos7 中!"
	systemctl start vsftpd
fi

rpm -q system-config-kickstart &> /dev/null
if (($bool == "1"))
	echo "正在检测是否安装 kickstart 软件包>"
then
	yum install -y system-config-kickstart &> /dev/null
	echo "kickstart 已经安装完毕!"
fi

echo "
install
keyboard --vckeymap=cn --xlayouts='cn'
rootpw --iscrypted $1$F21S05bH$jyNYoyHpkHTvaZtyoKR3D/
lang zh_CN.UTF-8
auth  --useshadow  --passalgo=sha512
graphical
firstboot --disable
selinux --disabled
firewall --disabled
network  --bootproto=dhcp --device=end33
reboot
timezone Asia/Shanghai
" > /var/ftp/ks.cfg

echo "
url --url="ftp://${getIP}/centos7"
" >> /var/ftp/ks.cfg

echo '
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part /boot --fstype="xfs" --size=500
part swap --fstype="swap" --size=4096
part / --fstype="xfs" --grow --size=1
' >> /var/ftp/ks.cfg


echo "
%post --interpreter=/bin/bash
cd /etc/yum.repos.d/;
cp CentOS-Base.repo CentOS-Base.repo.bak;

sed -e 's|^mirrorlist=|#mirrorlist=|g' \
         -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
         -i.bak \
         /etc/yum.repos.d/CentOS-*.repo;

yum makecache;
%end

%packages
@^gnome-desktop-environment
@base
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@networkmanager-submodules
@print-client
@x11
chrony

%end
" >> /var/ftp/ks.cfg

systemctl restart dhcpd
systemctl restart xinetd
systemctl restart tftp
systemctl restart vsftpd
systemctl restart network

echo "PXE已经安装完毕!注意事项:新机器内存≥2GB"

Guess you like

Origin blog.csdn.net/qq_42427971/article/details/114382930