部署PXE_KS无人值守shell

vim pxe_ks.sh

关于改进:把各项参数例如IP地址和一些不同设备的不同路径都做成变量

#!/bin/bash

#提示信息
echo "!!!请确认虚拟机是CD/DVD是否设置已连接?"
echo "!!!请确认PXE脚本各项参数是否已修改?"
echo "!!!请确认虚拟机镜像路径是否设置?"
echo "!!!请确认yum是否休眠需要rm -f /var/run/yum.pid?"
echo "!!!未设置可在5秒钟内ctrl+c结束!!"
sleep 5    #睡眠五秒

#判断是否挂载
grep mount_cdrom /etc/fstab  > /dev/null 2>&1       #所有输出重定向到null
if [  $? -eq 0 ] ; then
    echo "光盘重新加载.."
    mount -a
    sleep 0
    echo "光盘已挂载成功!!"
  else
    echo "正在挂载光盘.."
    echo "/dev/sr0 /mount_cdrom  iso9660 defaults      0 0"  >> /etc/fstab
    echo "正在新建挂载目录.."
    sleep 2
    mkdir /mount_cdrom
    echo "光盘重新加载.."
    sleep 2
    mount -a
    echo "光盘重新加载成功!!"
fi

#安装dhcp
echo "准备安装dhcp.."
ls /usr/share/doc/dhcp*/dhcpd.conf.example > /dev/null 2>&1
if [ $? -eq 0 ] ; then
    echo "DHCP已安装!!"
  else
    echo "正在安装DHCP,请稍后.."
    rm -f /var/run/yum.pid
    yum -y install dhcp 
fi

#配置dhcp
echo "正在配置DHCP配置文件.."
sleep 2
\cp /usr/share/doc/dhcp*/dhcpd.conf.example  /etc/dhcp/dhcpd.conf    #反斜杠可以不提示是否覆盖文件
sed -i '36 a\subnet 192.168.5.0 netmask 255.255.255.0 {\n    range 192.168.5.160 192.168.5.170;\n    next-server 192.168.5.7;\n    filename "pxelinux.0";\n}\n' /etc/dhcp/dhcpd.conf
echo "正在重启DHCP.."
systemctl restart dhcpd

#安装xinetd和tftp-server
rpm -qa | grep xinetd
if [ $? -eq 0 ] ; then
    echo "xinetd已经安装!!"
  else
    echo "xinetd正在安装.."
    yum -y install xinetd 
    echo "xinetd已经安装!!"
fi
rpm -qa | grep tftp-server
if [ $? -eq 0 ] ; then
    echo "tftp已经安装!!"
  else
    echo "tftp正在安装.."
    yum -y install tftp-server 
    echo "tftp已经安装!!"
fi

#替换xinetd的tftp配置
sed -i '14d' /etc/xinetd.d/tftp                                            #删除14行
sed -i '13 a\        disable                 = no' /etc/xinetd.d/tftp      #在13行后增加新的14行

#新系统提供pxelinux.0文件
rpm -qa | grep syslinux  > /dev/null 2>&1
if [ $? -eq 0 ] ; then
    echo 'syslinux已经安装!!'
  else
    echo '正在安装syslinux..'
    yum -y install syslinux  
    echo 'syslinux安装成功!!'
fi
cp /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot/

#复制系统安装所必须的引导文件
echo '正在复制系统安装所需的引导文件..'
sleep 2
cp /mount_cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /mount_cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /mount_cdrom/isolinux/vesamenu.c32  /var/lib/tftpboot/
cp /mount_cdrom/isolinux/boot.*  /var/lib/tftpboot/
if [ $? -eq 0 ] ; then
    echo '复制成功!!'
fi

#为引导程序制作一个配置文件
echo '正在为引导程序制作配置文件..'
sleep 2
if [ -e /var/lib/tftpboot/pxelinux.cfg ] ; then
    echo "pxelinux.cfg已存在,无需制作!!"
  else
    mkdir /var/lib/tftpboot/pxelinux.cfg
fi
\cp /mount_cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
sed -i '1d' /var/lib/tftpboot/pxelinux.cfg/default 
sed -i '1 i\default linux' /var/lib/tftpboot/pxelinux.cfg/default 
sed -i '64d' /var/lib/tftpboot/pxelinux.cfg/default  
sed -i '63 a\  append initrd=initrd.img inst.stage2=ftp://192.168.5.7/centos ks=ftp://192.168.5.7/centos/ks.cfg quiet' /var/lib/tftpboot/pxelinux.cfg/default
if [ $? -eq 0 ] ; then
    echo '引导程序配置文件制作完成!!'
fi

#安装ftp
rpm -qa | grep vsftpd
if [ $? -eq 0 ] ; then
    echo 'vsftpd已经安装!!'
  else
    echo '正在安装vsftpd'
    yum -y install vsftpd
    echo 'vsftpd安装成功!!'
fi

#复制完整操作系统到tftp配置文件指定的路径
mkdir /var/ftp/centos
echo '正在复制完整操作系统,请稍后几分钟..'
cp -r /mount_cdrom/* /var/ftp/centos/
echo '完整操作系统复制成功!!'

#为新系统制作ks文件
echo '正在制作ks文件..'
slepp 2
cp /root/anaconda-ks.cfg  /var/ftp/centos/ks.cfg
chmod +r /var/ftp/centos/ks.cfg
sed -i '22d' /var/ftp/centos/ks.cfg
sed -i '21 a\url --url="ftp://192.168.5.7/centos"' /var/ftp/centos/ks.cfg
sed -i '68 a\reboot\neula --agreed' /var/ftp/centos/ks.cfg
echo 'ks文件制作成功!!'

#重启服务,关闭防火墙,关闭使用syslinux
echo '正在重启服务,关闭防火墙'
systemctl restart tftp
systemctl restart xinetd
systemctl restart vsftpd
systemctl restart dhcpd
systemctl stop firewalld
setenforce 0
echo '重启服务成功,关闭防火墙成功!!'

#结束
yum -y install sl > /dev/null 2>&1          #一个小火车程序
echo '.......................'
echo '.......................'
echo 'PXE-KS操作系统无人值守程序部署成功!!'
echo '.......................'
echo '.......................'
sl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值