Linux (二十七) PXE 自动装机工具脚本编写
2021/5/31 7:21:53
本文主要是介绍Linux (二十七) PXE 自动装机工具脚本编写,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、功能简介
1.1.网络功能
1.2.服务包下载
1.3.dhcp功能
1.4.vsftpd功能
1.5.tftp-server功能
1.6.system-config-kickstart功能
二、功能实现
2.1.网络配置
2.2.下载服务
2.3.DHCP配置
2.4.VSFTP配置
2.4.TFTP配置
2.5.卸载服务
2.6.主菜单
2.7.二级菜单
三、演示效果
3.1.主菜单
3.2.二级菜单
3.3.网络配置
3.4.自动化安装
3.4.1.下载服务
3.4.2.DHCP服务设置
3.4.3.FTP服务设置
3.4.4.ks.cfg
四、客户端验证
4.1.设置启动方式
4.2.重启
一、功能简介
1.1.网络功能
可以配置NAT8和主机模式的网卡,主要区别,前者可以配置DNS,后者不需要配置DNS
1.2.服务包下载
根据网络通信情况,判断是否可以进行下载服务包,其中下载包有tftp-server 、vsftpd 、syslinux、dhcp 、system-config-kickstart
1.3.dhcp功能
配置dhcpd.conf配置文件,将需要分配的网段添加到服务中
启动dhcpd 服务
1.4.vsftpd功能
给客户端下载时候去连接ftp下载软件包
1.5.tftp-server功能
将系统启动的引导文件、内核文件等放到tftp上
1.6.system-config-kickstart功能
自动选择菜单自动安装。
二、功能实现
2.1.网络配置
#配置NAT8 的网卡配置,此处只做能连接外网的配置,至于主机模式,暂不考虑 ensPth="/etc/sysconfig/network-scripts/ifcfg-" function netUpdate(){ read -p "请输入你要修改的网卡名称:" ensname read -p "请输入IP地址:" ipname read -p "请继续输入子网掩码:" maskname read -p "请继续输入网关地址:" gname enso="${ensPth}${ensname}" read -p "1.修改主机模式网卡信息---------2.修改NAT模式网卡信息,请选择:" input case $input in 1) printf "%s\n" TYPE=Ethernet BOOTPROT=static DEFROUTE=yes NAME=$ensname DEVICE=$ensname IPADDR=$ipname NETMASK=$maskname GATEWAY=$gname > ${enso} [ -f ${enso} ] && echo "网卡文件创建完成" || echo "文件不存在" systemctl restart network ifconfig ;; 2) read -p "请继续输入DNS地址:" dns1 printf "%s\n" TYPE=Ethernet BOOTPROT=static DEFROUTE=yes NAME=$ensname DEVICE=$ensname IPADDR=$ipname NETMASK=$maskname GATEWAY=$gname DNS1=$dns1 > ${enso} [ -f ${enso} ] && echo "网卡文件创建完成" || echo "文件不存在" systemctl restart network ping www.baidu.com [ $? = 0 ] && echo "成功" || echo "网络配置存在问题" ;; q) echo "退出工具" return ;; *) echo "输入错误,工具重启!!!" netUpdate ;; esac }
2.2.下载服务
#下载需要的服务包,dhcp地址解析服务,tftp 小文件传输服务,syslinux 引导文件服务,vsftpd 大文件传输服务 ,kickstart 自动菜单选择服务 function downloadServer(){ ping www.baidu.com -c3 [ $? = 0 ] && yum -y install dhcp tftp-server syslinux system-config-kickstart.noarch vsftpd || echo "网络配置存在问题" }
2.3.DHCP配置
#DHCP配置 function dhcpP(){ read -p "请输入TFTP服务器IP地址:" inputip read -p "请输入需要分配的网段:" inputD read -p "请输入子网掩码:" inputX read -p "请输入网关地址:" inputL read -p "请输入需要ip范围【xxx.xxx.xxx.xxx xx.xx.xxx.xx】:" code [ -f /etc/dhcp/dhcpd.conf ] && cp -a /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf sed -i -e " 37i subnet ${inputD} netmask ${inputX} {\n range $code;\n option routers ${inputL};\n next-server ${inputip};\nfilename \"pxelinux.0\";\n }" /etc/dhcp/dhcpd.conf || echo "文件不存在" systemctl restart dhcpd [ $? = 0 ] && echo -e "\033[42;37m DHCP服务启动成功 \033[0m" || systemctl status dhcpd }
2.4.VSFTP配置
function vsftpd(){ systemctl start vsftpd [ $? = 0 ] && mkdir -p /var/ftp/centos7 || echo "ftp不存在" cp -a /mnt/* /var/ftp/centos7/ str1="install \n keyboard 'us' \n rootpw --plaintext root \n url --url=\"ftp://${ftpname}/centos7\"" str2=" \n lang zh_CN \n auth --useshadow --passalgo=sha512 \n graphical \n firstboot --disable \n selinux --disabled \n " str3=" firewall --disabled \n network --bootproto=dhcp --device=ens33 \n reboot \n timezone Asia/Shanghai " str4=" \n bootloader --location=mbr \n zerombr \n clearpart --all \n part / --fstype=\"xfs\" --size=20480 " str5=" \n part /boot --fstype=\"xfs\" --grow --size=1 \n %packages \n @development \n @gnome-desktop \n @remote-desktop-clients \n vinagre \n %end" echo -e ${str1}${str2}${str3}${str4}${str5} > /var/ftp/ks.cfg [ -f /var/ftp/ks.cfg ] && echo "ks.cfg 文件成完成!" || echo "文件生成失败,请查看!" sed -i -e "s/\[base\]/\[development\]/g" /etc/yum.repos.d/CentOS-Base.repo echo "yum配置文件修改完成!" }
2.4.TFTP配置
ftpname="" #tftp 设置 function tftpS(){ read -p "请输入ftp服务地址:" ftpip $ftpname=$ftpip [ -f /etc/xinetd.d/tftp ] && sed -i -e 's/disable = no/disable = yes/g' /etc/xinetd.d/tftp || echo "tftp 文件不存在!" systemctl restart tftp [ $? = 0 ] && [ -f /usr/share/syslinux/pxelinux.0 ] && cp -a /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ || echo "tftp-server未启动成功或者pxelinux.0 不存在" cp -a /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/ cp -a /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/ echo "查看文件是否存在" ls -l /var/lib/tftpboot/* echo "开始创建default文件" mkdir /var/lib/tftpboot/pxelinux.cfg [ -d /var/lib/tftpboot/pxelinux.cfg ] && echo -e "default auto \n label auto \n menu label Pxe Centos7 \n kernel vmlinuz \n append initrd=initrd.img ks=ftp://${ftpip}/ks.cfg method=ftp://${ftpip}/centos7" > /var/lib/tftpboot/pxelinux.cfg/default || echo "该文件不存在!!!" systemctl start tftp [ $? = 0 ] && echo -e "\033[42;37m tftp服务启动成功 \033[0m" && netstat -anup | grep 69 || systemctl status tftp }
2.5.卸载服务
function removeSer(){ yum remove dhcp tftp-server syslinux system-config-kickstart.noarch vsftpd rm -rf /var/lib/tftpboot/* rm -rf /var/ftp/centos7 echo "还原repo文件" sed -i -e "s/\[development\]/\[base\]/g" /etc/yum.repos.d/CentOS-Base.repo echo "配置文件修改完成!!" }
2.6.主菜单
function installx(){ printf "%-50s\t%-50s\n" "" "******1.网络设置********" "" "******2.自动化安装********" "" "******3.选择性安装********" "" "******4.卸载服务********" ;echo "" read -p "请选择操作,q退出工具:" sel case $sel in 1) netUpdate ;; 2) downloadServer&&dhcpP&&tftpS&&vsftpd ;; 3) installPl ;; 4) removeSer echo "服务卸载完成" ;; q) return ;; *) echo "输入错误,请重新输入" installx ;; esac }
2.7.二级菜单
function installPl(){ printf "%-50s\t%-50s\n" "" "******1.DHCP设置********" "" "******2.TFTP设置********" "" "******3.FTP设置********" ;echo "" read -p "请选择操作,q退出到主页面:" sll case $sll in 1) dhcpP ;; 2) tftpS ;; 3) vsftpd ;; q) installx ;; *) echo "输入错误,请重新输入!" installPl ;; esac }
三、演示效果
3.1.主菜单
3.2.二级菜单
3.3.网络配置
3.4.自动化安装
3.4.1.下载服务
3.4.2.DHCP服务设置
3.4.3.FTP服务设置
3.4.4.ks.cfg
四、客户端验证
4.1.设置启动方式
4.2.重启
出现以上界面算是已经完成一半了
出现这个界面已经证明完全完成。
以上为自己闲来无事时候编写的脚本,可能还有些缺陷,但功能实现没有任何问题,后期优化什么的,这边也会慢慢进行,后期和大家分享!!!!!
这篇关于Linux (二十七) PXE 自动装机工具脚本编写的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南