Linux shell编写脚本部署pxe网络装机
人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html
脚本实现PXE无人值守网络装机
1.运行脚本:
2.查看dhcp配置文件,看脚本是否成功执行,
3.查看/var/lib/tftpboot目录下是否有如下文件
4.虚拟机新建一个虚拟机,不加载光盘,取消dhcp自动获取,然后开启
5.下图可以看到,正在加载位于远端的tftp站点的内核,引导程序等
源码如下:
#!/bin/bash #该脚本用于自动化部署pxe网络装机 #作者:雨中落叶 #博客:https://www.cnblogs.com/yuzly/ #关闭防火墙,selinux安全机制 service iptables stop &>/dev/null setenforce 0 &>/dev/null #获得当前主机的IP地址 IP=$(ifconfig | head -2 | grep "inet addr" | awk '{print $2}'|awk -F: '{print $2}') #获得当前主机的网络号 NETIP=$(echo $IP |awk -F. '{print $1"."$2"."$3}') #获得当前主机的子网掩码 MASK=$(ifconfig |head -2 | tail -1 |awk '{print $4}'|awk -F: '{print $2}') #挂载光盘 mount /dev/sr0 /mnt &>/dev/null n=$(ls /mnt/$Date |wc -l) if [ $n -eq 0 ] then echo "没有挂载光盘,请挂载光盘,退出脚本执行状态!" exit fi #配置本地yum仓库 rm -fr /etc/yum.repos.d/* cat >>/etc/yum.repos.d/yuzly.repo<<OK [yuzly] name=yuzly baseurl=file:///mnt enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release OK yum clean all &>/dev/null #搭建ftp站点 if [ -d /etc/vsftpd ] then #把光盘文件复制到ftp站点下 mkdir /var/ftp/redhat6 echo "正在复制光盘文件........" cp -rf /mnt/* /var/ftp/redhat6 echo "完成复制......." #启动ftp服务 service vsftpd restart &>/dev/null else echo "该系统没有安装ftp服务,正在安装,请稍等....." yum install -y vsftpd &>/dev/null if [ ! -d /etc/vaftpd ] then echo "安装ftp失败,退出脚本执行状态!" exit fi #把光盘文件复制到ftp站点下 mkdir /var/ftp/redhat6 echo "正在复制光盘文件........" cp -rf /mnt/* /var/ftp/redhat6 echo "完成复制......." #启动ftp服务 service vsftpd start &>/dev/null fi #搭建tftp站点 if [ -f /etc/xinetd.d/tftp ] then #修改tftp配置文件,tftp默认是禁用,开启tftp功能 tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}') sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp #启动tftp服务 service xinetd restart &>/dev/null else echo "该系统没有安装tftp服务,正在安装,请稍等....." yum install -y tftp-server &>/dev/null if [ ! -f /etc/xinetd.d/tftp ] then echo "安装tftp失败,退出脚本执行状态!" exit fi #修改tftp配置文件,tftp默认是禁用,开启tftp功能 tftp_status=$(grep disable /etc/xinetd.d/tftp |awk -F= '{print $2}') sed -i "s/$tftp_status/no/" /etc/xinetd.d/tftp #启动tftp服务 service xinetd start &>/dev/null fi #部署客户端主机无盘启动时所需的Linux内核、初始化镜像文件 cd /mnt/images/pxeboot cp vmlinuz initrd.img /var/lib/tftpboot #准备客户端主机无盘启动时所需的PXE引导程序(pxelinux.0)、启动菜单文件 #安装syslinux软件包(支持PXE功能) yum -y install syslinux &>/dev/null if [ ! -d /usr/share/syslinux ] then echo "没有安装成功syslinux,退出脚本执行状态!" exit fi cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot #建立启动菜单文件 mkdir /var/lib/tftpboot/pxelinux.cfg cat >>/var/lib/tftpboot/pxelinux.cfg/default<<OK default auto prompt 0 label auto kernel vmlinuz append ks=ftp://$IP/redhat6/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192 label linux text kernel vmlinuz append text initrd=initrd.img devfs=nomount ramdisk_size=8192 label linux rescue kernel vmlinuz append rescue initrd=initrd.img devfs=nomount ramdisk_size=8192 OK #修改default文件权限 chmod 644 /var/lib/tftpboot/pxelinux.cfg/default #配置DHCP服务 if [ -f /etc/dhcp/dhcpd.conf ] then cat >/etc/dhcp/dhcpd.conf<<OK subnet $NETIP.0 netmask $MASK { range $NETIP.50 $NETIP.100; option domain-name-servers ns1.internal.example.org; option domain-name "internal.example.org"; option routers $IP; default-lease-time 600; max-lease-time 7200; next-server $IP; filename "pxelinux.0"; } OK #启动dhcp服务 service dhcpd restart &>/dev/null else echo "该系统没有安装dhcp服务,正在安装,请稍等....." yum install -y dhcp &>/dev/null if [ ! -f /etc/dhcp/dhcpd.conf ] then echo "安装dhcp失败,退出脚本执行状态!" exit fi cat >/etc/dhcp/dhcpd.conf<<OK subnet $NETIP.0 netmask $MASK { range $NETIP.50 $NETIP.100; option domain-name-servers ns1.internal.example.org; option domain-name "internal.example.org"; option routers $IP; default-lease-time 600; max-lease-time 7200; next-server $IP; filename "pxelinux.0"; } OK #启动dhcp服务 service dhcpd start &>/dev/null fi #配置实现客户端无人值守安装系统 #安装system-config-kickstart软件包 echo "正在安装system-config-kickstart软件包" yum -y install system-config-kickstart &>/dev/null echo "安装system-config-kickstart软件包完成!" #配置ks.cfg文件 cat >/var/ftp/redhat6/ks.cfg<<OK #platform=x86, AMD64, 或 Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="ftp://$IP/redhat6" # Root password rootpw --iscrypted $1$EdNye4v8$k9lKFbLL44WbEYorBFU/S1 # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # System keyboard keyboard us # System language lang zh_CN # SELinux configuration selinux --enforcing # Installation logging level logging --level=info OK echo "pxe服务端部署完成!"
----------------------------------------------------------------------------------------------------------------------------------
人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html
内容来源于网络如有侵权请私信删除
- 还没有人评论,欢迎说说您的想法!