• Shell脚本完成pxe装机配置


    目录

    一、进入脚本界面

    二、必要手动设置

     三、设置网卡,关闭防火墙

     四、下载相关服务并挂载系统光盘

    五、进行服务配置

    六、将装机文件移动到tftp文件夹

    七、使用case让用户选择使用函数方法


    一、进入脚本界面

     脚本界面代码:

    1. #!/bin/bash
    2. echo "-----------------------------------------------"
    3. echo -e "欢迎使用pxe网络装机基础搭建脚本!\n作者:吕佳朋\n1.关闭防火墙,创建网卡ens36\n2.下载必要软件包并挂载系统光盘\n3.配置dhcp、tftp\n4.将装机必要文件移动到/var/lib/tftpboot\n5.exit"
    4. echo "-----------------------------------------------"
    5. read -p "please enter your choice:" i

    二、必要手动设置

    为虚拟机pxe服务端增加网卡设备,设置自定义仅主机模式(VMnet1)

    这张网卡是作为dhcp服务器和ftp服务器为装机来分配ip并安装系统相关文件的,所有不需要设置网关地址和DNS,具体配置见下文。

     三、设置网卡,关闭防火墙

    1. firewalldset(){
    2. read -p "请输入你的ens33网卡ip:" net1
    3. read -p "请输入你作为dhcp服务端的网卡ip:" net
    4. echo "=================================关闭系统防护=================================="
    5. systemctl stop firewalld
    6. setecforce 0
    7. systemctl status firewalld
    8. echo `#grep SELINNUX=disabled /etc/sysconfig/selinux`
    9. grep SELINUX=disabled /etc/sysconfig/selinux
    10. echo `#getenforce`
    11. echo "==============================================================================="
    12. echo "防火墙以及防护已关闭!"
    13. echo "==============================================================================="
    14. cp -p /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
    15. sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-ens36
    16. #删除ens33网卡的UUID,否则会报错
    17. sed -i 's/ens33/ens36/' /etc/sysconfig/network-scripts/ifcfg-ens36
    18. #将ens33替换成ens36
    19. sed -i s/$net1/$net/ /etc/sysconfig/network-scripts/ifcfg-ens36
    20. #将ens33网卡地址进行替换
    21. sed -i '/DNS/d' /etc/sysconfig/network-scripts/ifcfg-ens36
    22. #将DNS行删除
    23. sed -i '/GATEWAY/d' /etc/sysconfig/network-scripts/ifcfg-ens36
    24. #将网关行删除
    25. sed -i 's/dhcp\|none/static/' /etc/sysconfig/network-scripts/ifcfg-ens36
    26. #将含有“dhcp”或“none”替换成static
    27. ifdown ens36 && ifup ens36
    28. ping -c 1 baidu.com > /dev/null
    29. if [ $? -eq 0 ];then
    30. echo "网络连接正常,设置完成!"
    31. elif [ $? -ne 0 ];then
    32. echo "网络设置出现错误,请检查"
    33. fi
    34. }

    please enter your choice:1
    请输入你的ens33网卡地址:192.168.116.22
    请输入你作为dhcp服务端的网卡ip:192.168.100.100
     

    检验:

     四、下载相关服务并挂载系统光盘

    yum下dhcp、tftp-server、syslinux、xinetd、system-config-kickstart、vsftpd

    挂载系统光盘到/mnt下

    1. install(){
    2. echo "================================开始软件包安装================================"
    3. yum install -y dhcp
    4. yum install -y tftp-server
    5. yum install -y syslinux
    6. yum install -y xinetd
    7. yum install -y system-config-kickstart
    8. yum install -y vsftpd
    9. echo "===============================开始系统光盘挂载==============================="
    10. mount /dev/sr0 /mnt
    11. echo "=============================================================================="
    12. echo "必要软件包安装成功,系统光盘已挂载"
    13. mount | grep /dev/sr0
    14. echo "=============================================================================="
    15. }

    五、进行服务配置

    复制一份dhcp.conf.example到/etc/dhcp/dhcpd.conf,并写入:

    subnet 192.168.100.0 netmask 255.255.255.0 {
           range 192.168.100.40 192.168.100.50;
           option routers 192.168.100.100;
           option domain-name-servers 114.114.114.114;
           next-server 192.168.100.100;
          filename \"pexlinux.0\";

    其他的具体配置可以看之前的配置pxe装机的博客 :https://blog.csdn.net/m0_71518373/article/details/125923938?spm=1001.2014.3001.5502

    1. serviceset(){
    2. cp -p /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
    3. echo "ddns-update-style none;
    4. subnet `echo $net | cut -d '.' -f 1-3`.0 netmask 255.255.255.0 {
    5. range `echo $net | cut -d '.' -f 1-3`.40 `echo $net | cut -d '.' -f 1-3`.50;
    6. option routers $net;
    7. option domain-name-servers 114.114.114.114;
    8. next-server $net;
    9. filename \"pexlinux.0\";
    10. }">> /etc/dhcp/dhcpd.conf
    11. #这里通过填写的ip参数来进行设置网段和ip池^^^
    12. systemctl enable dhcpd
    13. systemctl start dhcpd
    14. sed -i '/wait/s/yes/no/' /etc/xinetd.d/tftp
    15. sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp
    16. systemctl enable tftp
    17. systemctl start tftp
    18. mkdir /var/ftp/centos7
    19. cp -rf /mnt/* /var/ftp/centos7
    20. systemctl enable vsftpd
    21. systemctl start vsftpd
    22. mkdir /var/lib/tftpboot/pxelinux.cfg
    23. echo "default auto
    24. echo "default auto
    25. prompt 1
    26. label auto
    27. kernel vmlinuz
    28. append initrd=initrd.img method=ftp://$net/centos7 ks=ftp://$net/ks.cfg
    29. label linux text
    30. kernel vmlinuz
    31. append text initrd=initrd.img method=ftp://$net/centos7 ks=ftp://$net/ks.cfg
    32. label linux rescue
    33. kernel vmlinuz
    34. append rescue initrd=initrd.img method=ftp://$net/centos7 ks=ftp://$net/ks.cfg">> /var/lib/tftpboot/pxelinux.cfg/default
    35. echo "---------------------------------------------------------------------------"
    36. echo "The main services are ready!"
    37. echo "dhcpd:"
    38. systemctl status dhcpd | grep -i active
    39. echo "tftp:"
    40. systemctl status tftp | grep -i active
    41. echo "vsftpd:"
    42. systemctl status vsftpd | grep -i active
    43. echo "----------------------------------------------------------------------------"
    44. }

    六、将装机文件移动到tftp文件夹

    简单的cp命令

    1. filemv(){
    2. cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
    3. cp /mnt/images/pxeboot/vmlunz /var/lib/tftpboot/
    4. cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
    5. echo "---------------------------------------------"
    6. echo "The main pxe-files are already in position!"
    7. echo "请进入桌面点击kickstart进行配置!"
    8. echo "感谢使用,熊猫烧香"
    9. echo "---------------------------------------------"
    10. exit
    11. }

     kickstart这里还是需要在桌面环境中操作,并将保存的配置文件存放在 var/ftp/下

    七、使用case让用户选择使用函数方法

    1. main()
    2. {
    3. case $i in
    4. 1)
    5. firewalldset
    6. ;;
    7. 2)
    8. install
    9. ;;
    10. 3)
    11. serviceset
    12. ;;
    13. 4)
    14. filemv
    15. ;;
    16. 5)
    17. echo "感谢使用,熊猫烧香"
    18. exit
    19. ;;
    20. *)
    21. echo "错误的输入,请重新选择"
    22. ;;
    23. esac
    24. }
    25. main $*

  • 相关阅读:
    PE文件(十一)移动导出表和重定位表
    开源远程桌面软件_RustDesk_(可自建远程桌面服务器)
    【Net6】Net 5.0迁移到Net 6.0
    abap关于COMMIT WORK (提交工作)和 COMMIT WORK AND WAIT 的区别
    2022-06-21 Java后端面试总结
    并发模式之异步回调Future模式
    基于springboot+vue的华山旅游网(前后端分离)
    Spring项目bean 无法注入问题--Thread中注入Bean无效-多线程下@Resource和@Autowired和@Value 注入为null
    5.使用日志+自定义全局异常过滤器
    【最详细】最新最全Java虚拟机(JVM)面试题(51道)
  • 原文地址:https://blog.csdn.net/m0_71518373/article/details/126119030