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