shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!

Posted 码海小虾米_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!相关的知识,希望对你有一定的参考价值。

1. 编写脚本情况分析

  1. 部署之前检查tftp-server、xinetd是否安装,没有安装则进行安装,安装失败会退出;
  2. 进行一键部署dhcp服务,将本机作为dhcp服务器,并开启服务;
  3. 判断syslinux、vsftpd程序是否安装,没有安装则进行安装,安装失败会退出;
  4. 然后对配置文件进行修改。

2. 脚本代码部分

#!/bin/bash
# 一键部署PXE自动装机

# 检查tftp-server是否安装
if rpm -q tftp-server &> /dev/null
then
   continue
else
   if yum install -y tftp-server &> /dev/null
   then
      continue
   else
      echo -e "\\033[31;5m tftp-server安装失败,请检查yum源是否正常! \\033[0m"
      exit
   fi
fi

# 检查xinetd是否安装
if rpm -q xinetd &> /dev/null
then
   continue
else
   if yum install -y xinetd &> /dev/null
   then
      continue
   else
      echo -e "\\033[31;5m xinetd安装失败,请检查yum源是否正常! \\033[0m"
      exit
   fi
fi

# 修改tftp配置文件
sed -i '14 s/yes/no/' /etc/xinetd.d/tftp

# 判断tftp服务是否开启
if systemctl restart tftp  &> /dev/null
then
    # 判断xinetd服务是否开启
    if systemctl restart xinetd  &> /dev/null
    then
        continue
    else
        echo -e "\\033[31;5m xinetd启动失败,已退出! \\033[0m"
        exit
    fi
    echo -e '\\033[34m tftp和xinetd服务安装启动完成!已设置开机自启动!\\033[0m'
else
    echo -e "\\033[31;5m tftp启动失败,已退出! \\033[0m"
    exit
fi


#!/bin/bash
#一键部署dhcp服务

# 判断光盘是否挂载到mnt目录下
if find /mnt/images/pxeboot/ -name "vmlinuz" &> /dev/null
then
    continue
else
    echo -e "\\033[31;5m 光盘未挂载或未挂载到/mnt目录! \\033[0m"
    exit 
fi

# 判断bind程序是否安装
if rpm -q dhcp &> /dev/null
then
   continue
else
   if yum install -y dhcp &> /dev/null
   then
      continue
   else
      echo -e "\\033[31;5m dhcp安装失败,请检查yum源是否正常! \\033[0m"
      exit
   fi
fi

# 修改dhcp配置文件
/bin/cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
sed -i '14 s/#//' /etc/dhcp/dhcpd.conf 
ip=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | awk -F= '{print $2}'
`
sed -i '/ddns-update-style/a\\next-server '$ip';' /etc/dhcp/dhcpd.conf 
sed -i '/next-server/a\\filename "pxelinux.0";' /etc/dhcp/dhcpd.conf
host=`cat /etc/sysconfig/network-scripts/ifcfg-ens33 | grep IPADDR | awk -F= '{print $2}' | awk -F. '{print $4}'
`
sed -i '34 s/10.254.239.0/'$ip'/' /etc/dhcp/dhcpd.conf 
sed -i '34 s/'$host'/0/' /etc/dhcp/dhcpd.conf 
sed -i '34 s/255.224/255.0/' /etc/dhcp/dhcpd.conf 
sed -i '35 s/10.254.239.10/'$ip'/' /etc/dhcp/dhcpd.conf 
sed -i '35 s/'$host'/100/' /etc/dhcp/dhcpd.conf 
sed -i '35 s/10.254.239.20/'$ip'/' /etc/dhcp/dhcpd.conf 
sed -i '35 s/'$host'/200/' /etc/dhcp/dhcpd.conf 
sed -i '36 s/rtr-239-0-1.example.org, rtr-239-0-2.example.org/'$ip'/' /etc/dhcp/dhcpd.conf 

# 判断dhcp服务是否开启
if systemctl restart dhcpd  &> /dev/null
then
    echo -e '\\033[34m dhcpd服务安装启动完成!已设置开机自启动!\\033[0m'
else
    echo -e "\\033[31;5m dhcpd启动失败,已退出! \\033[0m"
    exit
fi

/bin/cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
/bin/cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/

# 判断syslinux程序是否安装
if rpm -q syslinux &> /dev/null
then
   continue
else
   if yum install -y syslinux &> /dev/null
   then
      continue
   else
      echo -e "\\033[31;5m syslinux安装失败,请检查yum源是否正常! \\033[0m"
      exit
   fi
fi

/bin/cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/


# 判断vsftpd程序是否安装
if rpm -q vsftpd &> /dev/null
then
   continue
else
   if yum install -y vsftpd &> /dev/null
   then
      continue
   else
      echo -e "\\033[31;5m vsftpd安装失败,请检查yum源是否正常! \\033[0m"
      exit
   fi
fi


mkdir /var/ftp/centos7
echo -e "\\033[35;5m 正在复制镜像,请等待......... \\033[0m"

/bin/cp -rf /mnt/* /var/ftp/centos7/


# 判断vsftpd服务是否开启
if systemctl restart vsftpd  &> /dev/null
then
    echo -e '\\033[34m syslinux和vsftpd服务启动完成!已设置开机自启动!\\033[0m'
else
    echo -e "\\033[31;5m vsftpd启动失败,已退出! \\033[0m"
    exit
fi

mkdir /var/lib/tftpboot/pxelinux.cfg

echo 'default auto
prompt 1

label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://'$ip'/centos7

label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://'$ip'/centos7

label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://'$ip'/centos7
' > /var/lib/tftpboot/pxelinux.cfg/default
systemctl stop firewalld
setenforce 0 &> /dev/null

echo -e '\\033[36m pxe一键装机部署完毕!请开始你的表演!\\033[0m'

3. 实验部分

在这里插入图片描述

以上是关于shell脚本之一键部署PXE远程安装服务,将解放双手进行到底!的主要内容,如果未能解决你的问题,请参考以下文章

常用的shell脚本之一键部署DNS服务正向解析

shell脚本之一键部署zookeeper集群服务,能用脚本解决的事情,绝对不手敲。

PXE批量装机解放你的双手!

PXE高效批量装机和Kickstart无人值守技术(从此解放双手)

shell 脚本之一键部署安装 Nginx

在Linux上部署PXE远程安装服务