设为首页 收藏本站
查看: 850|回复: 0

快速搭建部署网络PXE shell 脚本

[复制链接]

尚未签到

发表于 2018-8-19 07:51:19 | 显示全部楼层 |阅读模式
  #运行脚本前提 拥有一个 ios 镜像文件
  #此脚本 我使用的是 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>  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

  #>
  menu color>  # 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"
  具体步骤解释  请看http://blog.51cto.com/13558754/2058170


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-553648-1-1.html 上篇帖子: sed在shell脚本中引用变量方式大解剖 下篇帖子: Shell打印日期列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表