快速搭建部署網絡PXE shell 腳本

#運行腳本前提 擁有一個 iso 鏡像文件
#此腳本 我使用的是 rhel-server-7.2-x86_64-dvd.iso 這個鏡像
#我使用的是KVM虛擬機 將此鏡像掛載到光驅上 也就是 /dev/cdrom
#若是不想使用 /dev/cdrom 也能夠將你所要安裝操做系統的鏡像 拷貝到本身定義的文件中
#而後 用本身定義的這個文件 替換本腳本中的 /dev/cdrom
#具體能夠 sed -i "/\/dev\/cdrom/s/\/dev\/cdrom/${在這個寫你本身定義的文件目錄}/"  此腳本名
#!/bin/bash
#獲取當前機器IP地址
IP=`ifconfig | head -2 | tail -1 | awk '{print $2}'`
#獲取當前機器MASK地址
MASK=`ifconfig | head -2 | tail -1 | awk '{print $4}'`
MASK1=`echo $MASK | awk -F. '{print $1}'`
if [ $MASK1 -ne 0 ];then
IP1=`echo $IP | awk -F. '{print $1}'`
MIN1=`echo $IP | awk -F. '{print $1}'`
MAX1=`echo $IP | awk -F. '{print $1}'`
else
IP1=0
MIN1=1
MAX1=254
fi
MASK2=`echo $MASK | awk -F. '{print $2}'`
if [ $MASK2 -ne 0 ];then
        IP2=`echo $IP | awk -F. '{print $2}'`
MIN2=`echo $IP | awk -F. '{print $2}'`
MAX2=`echo $IP | awk -F. '{print $2}'`
else
        IP2=0
MIN2=1
MAX2=254
fi
MASK3=`echo $MASK | awk -F. '{print $3}'`
if [ $MASK3 -ne 0 ];then
        IP3=`echo $IP | awk -F. '{print $3}'`
MIN3=`echo $IP | awk -F. '{print $3}'`
MAX3=`echo $IP | awk -F. '{print $3}'`
else
        IP3=0
MIN3=1
MAX3=254
fi
MASK4=`echo $MASK | awk -F. '{print $4}'`
if [ $MASK4 -ne 0 ];then
        IP4=`echo $IP | awk -F. '{print $4}'`
MIN4=`echo $IP | awk -F. '{print $4}'`
MAX4=`echo $IP | awk -F. '{print $4}'`
else
        IP4=0
MIN4=1
MAX4=254
fi
#NETIP爲要配置DHCP的網絡號
NETIP="$IP1.$IP2.$IP3.$IP4"
#MINIP 爲要配置DCHP範圍最小IP
MINIP="$MIN1.$MIN2.$MIN3.$MIN4"
#MAXIP 爲要配置DCHP範圍最大IP
MAXIP="$MAX1.$MAX2.$MAX3.$MAX4"


systemctl stop firewalld.service 
setenforce 0
#配置本地YUM源
echo -en "正在配置本地YUM源......\t\t" 
creatyum(){
echo "/dev/cdrom  /mnt/  iso9660  defaults 0 0" >> /etc/fstab 
mount -a  &> /dev/null
n=`ls /mnt/$Date | wc -l`
if [ $n -eq 0 ];then
echo '請掛載光盤文件!!!'
exit
fi
rm -rf /etc/yum.repos.d/*
echo "[dvd]
name=dvd
baseurl=file:///mnt/
gpgcheck=0
" > /etc/yum.repos.d/dvd.repo
yum clean all &> /dev/null
}
yum repolist &> ${Date}.txt
a=`cat ${Date}.txt | tail -1 | sed 's/[,]//' | awk '{print $2}'` 
rm -rf ${Date}.txt
if [ -z `echo "$a" | grep -e 's/[^0-9]//'` ];then
creatyum
elif [ $a -eq 0 ];then
creatyum 
fi
echo -e "\e[32;1m[OK]\e[0m"



#部署DHCP服務器
echo -en "正在部署DHCP服務器......\t\t" 
yum -y install dhcp  >& /dev/null
echo '
subnet $NETIP netmask $MASK {
    range $MINIP $MAXIP; 
    option domain-name-servers $IP;
    option routers $IP;                       
    default-lease-time 600;       
    max-lease-time 7200;
    next-server $IP;
    filename "pxelinux.0";

}' > /etc/dhcp/dhcpd.conf
sed -i "s/\$IP/$IP/" /etc/dhcp/dhcpd.conf
sed -i "s/\$MASK/$MASK/" /etc/dhcp/dhcpd.conf
sed -i "s/\$NETIP/$NETIP/" /etc/dhcp/dhcpd.conf
sed -i "s/\$MINIP/$MINIP/" /etc/dhcp/dhcpd.conf
sed -i "s/\$MAXIP/$MAXIP/" /etc/dhcp/dhcpd.conf
systemctl restart dhcpd>& /dev/null
systemctl enable dhcpd>& /dev/null
echo -e "\e[32;1m[OK]\e[0m"

#搭建TFTP服務
echo -en "正在搭建TFTP服務......\t\t" 
yum -y install tftp-server.x86_64>& /dev/null
systemctl restart tftp>& /dev/null
systemctl enable tftp>& /dev/null
echo -e "\e[32;1m[OK]\e[0m"

#部署pxelinux.0文件
echo -en "正在部署pxelinux.0文件......\t\t"
yum -y install syslinux-4.05-12.el7.x86_64 >& /dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
mkdir /var/lib/tftpboot/pxelinux.cfg/  >& /dev/null
cp /mnt/isolinux/initrd.img /mnt/isolinux/vmlinuz /mnt/isolinux/vesamenu.c32  /var/lib/tftpboot/
echo -e "\e[32;1m[OK]\e[0m"


#部署default默認的菜單文件
echo -en "正在部署default默認的菜單文件......\t\t"
yum -y install vsftpd >& /dev/null
systemctl restart vsftpd >& /dev/null
systemctl enable vsftpd >& /dev/null
mkdir /var/ftp/rhel7  >& /dev/null
mount /dev/cdrom /var/ftp/rhel7 >& /dev/null
echo -e "\e[32;1m[OK]\e[0m"

#搭建vsftpd服務,共享應答文件
echo -en "正在搭建vsftpd服務,共享應答文件......\t\t"
echo '
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$Vl9/l0oR$ZM8s/NJIjlPSGy6P0cMMb.
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="ftp://$IP/rhel7"
# System language
lang zh_CN
# Firewall configuration
firewall --disabled
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
# SELinux configuration
selinux --disabled
# Do not configure the X Window System
skipx

# Network information
network  --bootproto=dhcp --device=eth0
# Reboot after installation
reboot
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part swap --fstype="swap" --size=1024
part / --fstype="xfs" --grow --size=1

%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
echo "
[ftp]
name=ftp
baseurl=ftp://$IP/rhel7
enabled=1
gpgcheck=0
" > /etc/yum.repos.d/ftp.repo
%end

%packages
@base

%end
' > /var/ftp/ks.cfg 
sed -i "s/\$IP/$IP/"  /var/ftp/ks.cfg 
echo -e "\e[32;1m[OK]\e[0m"

#部署default默認的菜單文件
echo -en "正在部署default默認的菜單文件......\t\t"
echo '
default vesamenu.c32
timeout 600

display boot.msg

# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title PXE SERVER 
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13

# Border Area
menu color border * #00000000 #00000000 none

# Selected item
menu color sel 0 #ffffffff #00000000 none

# Title bar
menu color title 0 #ff7ba3d0 #00000000 none

# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none

# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none

# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none

# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none

# Help text
menu color help 0 #ffffffff #00000000 none

# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none

# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none

# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none

# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.

menu tabmsg Press Tab for full configuration options on menu items.

menu separator # insert an empty line
menu separator # insert an empty line

label linux
  menu label ^Install RHEL
  kernel vmlinuz
  append initrd=initrd.img ks=ftp://$IP/ks.cfg

' > /var/lib/tftpboot/pxelinux.cfg/default
sed -i "s/\$IP/$IP/"  /var/lib/tftpboot/pxelinux.cfg/default
chmod 644 /var/lib/tftpboot/pxelinux.cfg/default

echo -e "\e[32;1m[OK]\e[0m"
echo -e "PXE服務部署成功\t\t"

具體步驟解釋  請看https://blog.51cto.com/13558754/2058170
linux

相關文章
相關標籤/搜索