Linux shell编写脚本部署pxe网络装机
程序员文章站
2022-03-12 11:19:06
Linux shell编写脚本部署pxe网络装机 人工安装配置,Linux PXE无人值守网络装机 https://www.cnblogs.com/yuzly/p/10582254.html 脚本实现PXE无人值守网络装机 1.运行脚本: 2.查看dhcp配置文件,看脚本是否成功执行, 3.查看/v ......
linux shell编写脚本部署pxe网络装机
人工安装配置,linux pxe无人值守网络装机
脚本实现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无人值守网络装机