Linux shell編寫腳本部署pxe網路裝機 人工安裝配置,Linux PXE無人值守網路裝機 https://www.cnblogs.com/yuzly/p/10582254.html 腳本實現PXE無人值守網路裝機 1.運行腳本: 2.查看dhcp配置文件,看腳本是否成功執行, 3.查看/v ...
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