Shell脚本攻略:shell实现pxe无人值守安装

news2024/12/28 17:37:25

目录

一、实验

1.shell实现pxe无人值守安装


一、实验

1.shell实现pxe无人值守安装

(1)脚本截图

 1 echo 'set nu' > ~/.vimrc
  2 systemctl stop firewalld
  3 setenforce 0
  4 umount /dev/sr0 /mnt
  5 mount /dev/sr0 /mnt
  6 cd /etc/yum.repos.d/
  7 mkdir bake
  8 mv *.repo bake/
  9 echo "[local]
 10 name=local
 11 baseurl=file:///mnt
 12 enabled=1
 13 gpgcheck=0
 14 " > local.repo
 15 yum clean all && yum makecache
 16 yum -y install tftp-server
 17 yum -y install xinetd
 18 cat /etc/xinetd.d/tftp  | sed '/^wait/c wait=no'
 19 systemctl start tftp
 20 systemctl enable tftp
 21 systemctl start xinetd
 22 systemctl enable xinetd
 23 yum install -y dhcp
 24 cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
 25 sed -i '14 s/^#//' /etc/dhcp/dhcpd.conf
 26 sed -i '14a next-server 192.168.204.50;' /etc/dhcp/dhcpd.conf
 27 sed -i '15a filename "pxelinux.0";' /etc/dhcp/dhcpd.conf
 28 sed -i -e '34 s/10.254.239.0/192.168.204.0/' -e '34 s/255.255.255.224/255.255.255.0/' /etc/dhcp/dhcpd.conf
 29 sed -i '35c range 192.168.204.51 192.168.204.90;' /etc/dhcp/dhcpd.conf
 30 sed -i '36 s/rtr-239-0-1.example.org, rtr-239-0-2.example.org/192.168.204.50/' /etc/dhcp/dhcpd.conf
 31 systemctl start dhcpd
 32 systemctl enable dhcpd
 33 cd /mnt/images/pxeboot
 34 cp vmlinuz /var/lib/tftpboot/
 35 cp initrd.img /var/lib/tftpboot/
 36 yum -y install syslinux
 37 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
 38 yum -y install vsftpd
 39 mkdir /var/ftp/centos7
 40 chmod 777 /var/ftp/centos7
 41 cp -rf /mnt/* /var/ftp/centos7/
 42 systemctl start vsftpd
 43 systemctl enable vsftpd
 44 yum install -y system-config-kickstart
 45 pwd=`grep root /etc/shadow | cut -d: -f2`
 46 echo "#platform=x86, AMD64, 或 Intel EM64T
 47 #version=DEVEL
 48 # Install OS instead of upgrade
 49 install
 50 # Keyboard layouts
 51 keyboard 'us'
 52 # Root password
 53 rootpw --iscrypted $pwd
 54 # Use network installation
 55 url --url="ftp://192.168.204.50/centos7"
 56 # System language
 57 lang zh_CN
 58 # Firewall configuration
 59 firewall --disabled
 60 # System authorization information
 61 auth  --useshadow  --passalgo=sha512
 62 # Use graphical install
 63 graphical   
 64 firstboot --disable 
 65 # SELinux configuration
 66 selinux --disabled
 67 # Do not configure the X Window System
 68 skipx 
 69 
 70 # Network information
 71 network  --bootproto=dhcp --device=ens33
 72 # Reboot after installation
 73 reboot
 74 # System timezone
 75 timezone Asia/Shanghai
 76 # System bootloader configuration
 77 bootloader --location=mbr 
 78 # Clear the Master Boot Record
 79 zerombr
 80 # Partition clearing information
 81 clearpart --all --initlabel
 82 # Disk partitioning information
 83 part /boot --fstype="xfs" --size=500
 84 part swap --fstype="swap" --size=4096
 85 part /home --fstype="xfs" --size=4096
 86 part / --fstype="xfs" --grow --size=1
 87 
 88 %post --interpreter=/bin/bash
 89 rm -rf /etc/yum.repos.d/*
 90 echo '[local]
 91 name=local
 92 baseurl=ftp://192.168.204.50/centos7
 93 enabled=1
 94 gpgcheck=0' > /etc/yum.repos.d/local.repo
 95 %end
 96 
 97 
 98 %packages
 99 @base
100 @core
101 @desktop-debugging
102 @dial-up
103 @directory-client
104 @fonts
105 @gnome-desktop
106 @guest-desktop-agents
107 @input-methods
108 @internet-browser
109 @java-platform
110 @multimedia
111 @network-file-system-client
112 @print-client
113 @x11
114 binutils
115 chrony
116 ftp
117 gcc
118 kernel-devel
119 kexec-tools
120 make
121 open-vm-tools
122 patch
123 python
124 
125 %end
126 " > /var/ftp/ks.cfg
127 mkdir /var/lib/tftpboot/pxelinux.cfg
128 echo "default auto
129 prompt 0
130 
131 label auto
132 kernel vmlinuz
133 append initrd=initrd.img method=ftp://192.168.204.50/centos7 ks=ftp://192.168.204.50/ks.cfg
134 
135 label linux text
136 kernel vmlinuz
137 append text initrd=initrd.img method=ftp://192.168.204.50/centos7
138 
139 label linux rescue
140 kernel vmlinuz
141 append rescue initrd=initrd.img method=ftp://192.168.204.50/centos7" > /var/lib/tftpboot/pxelinux.cfg/default
142 
                                                                                           
                                          

(2)运行结果

pxe 

无人值守

      

(3)问题

(1) 行定位

原因分析:通过关键词检索所在行,ddns1个可以立即搜索到,subnetnetmask存在多个,检索行时无法锁定目标行。

解决方法:设置vim永久显示编号,echo 'set nu' > ~/.vimrc

(2)dhcpd服务启动失败

原因分析:因为dhcp服务是需要先配置一下配置文件才能启动的,刚安装好的配置文件(/etc/dhcp/dhcpd.conf)是空的,所以启动不起来,报错。

解决方法:

       检查文件,发现sed命令替换缺少“/

修改前:

修改后:

解决方法:

      通过网卡配置文件,检查dhcp配置文件,发现服务器地址多了一个“/“,少了“; PXE 引导程序的文件名少了“;”和引号

 

 修改前:

修改后:

地址池地址配置错误

 修改前:

修改后:

指定要下载的 PXE 引导程序的文件名引用错误

修改前:

修改后:

(3)无人值守配置文件ks.cfg密码不生效

原因分析:rootpw密码可以使用明文,也可以使用加密过的值。

解决方法:引用当前主机密码。

(4) xinetd没有可用软件包

  • 原因分析:无yum源下载软件

解决方法:配置本地yum

原因分析:拼写错误

解决方法:重新配置

修改前:

修改后:

(5) 虚拟机开机出现dracut:/#

原因分析:安装程序未能找到安装文件,无法加载所致。

解决方法:将Linux系统的内核文件复制到TFTP根目录下

(6)提供ks.cfg文件的服务宕机

原因分析:定位到SYSLINUX服务程序出现了问题,即是FTP在没在匿名用户下,要求FTP必须在匿名用户下。到这一步,表示内核与伪文件系统已经加载完毕,准备根据ks.cfg应答文件进行自动安装,但是提示连接服务,请求文件失败。

解决方法:centos7文件夹赋权。

修改后:

没有使用匿名用户模式,修改vsftpd配置文件。

修改前:

 

修改后:

修改前:

 

修改后:

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/616896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编学习教程:bp 寄存器

引言 我们在此前的学习中已经了解了CPU中众多的寄存器,比如通用寄存器 AX、BX、CX、DX,还有段寄存器 CS、DS、SS、ES。在内存访问和灵活寻址的学习中,我们重点学习了 BX 寄存器和 CX 寄存器。BX 寄存器通常配合 DS段寄存器来实现内存访问&am…

做完瑞吉外卖项目的一点笔记和源码

源码在 https://gitee.com/pluto8/take-out 一、软件开发整体介绍 1、软件开发流程 需求分析 :产品原型,需求规格说明书(文档形式)设计:产品文档、UI界面设计、概要设计、详细设计、数据库设计编码:项目…

STM32 实现简单定时任务调度器,支持动态添加临时任务

代码实现和硬件没关系,所以并不限于STM32,Arduino 之类的其他地方也能用,只要有一个能获取时间的函数就行,或者说,只要有一个会随着时间自动增加的变量就行,时间单位无所谓,所以确实想的话&…

菜单权限验证和分页功能

权限验证 1.创建数据库,然后测试菜单权限的联合查询语句; 2.创建项目,导入jar包,配置实体类和工具类 3.完成登录功能,当输入用户名和密码正确后跳转到框架页面 编写导航页(top.jsp)和内容页…

Vscode +Msys2配置C/C++环境

目录 前期准备:Step1: 安装Msys2Step2: 安装编译器Step3: 安装VScodeStep4: 配置VScodec_cpp_properties.jsonlaunch.jsontasks.json Step5: 创建C/C项目 前期准备: 首先,你需要下载并安装以下软件: VsCode:https://c…

软件需求分析-复习指南

这里写自定义目录标题 下面是一段用例的描述,针对一个汽车保险系统中“将一辆新车加入一个已有保单中”的用例。请你为其设计: (1) 领域模型(要求给出建立过程)(20分); (2) 活动图 (14分); (3) 顺序图 (14分…

linux内核open文件流程

打开文件流程 本文基本Linux5.15 当应用层通过open api打开一个文件,内核中究竟如何处理? 本身用来描述内核中对应open 系统调用的处理流程。 数据结构 fdtable 一个进程可以打开很多文件, 内核用fdtable来管理这些文件。 include/linu…

为项目添加 HibernateValidator

HibernateValidatorhttps://hibernate.org/validator/ 引入依赖项 首先&#xff0c;确保已将Hibernate Validator添加到Maven或Gradle依赖项中&#xff1a; <!-- Maven 依赖 --> <dependency><groupId>org.hibernate.validator</groupId><artifa…

三年功能测试经验,投了几百份简历,为什么没有收到offer?

软件测试行业3年多经验&#xff0c;学历大专自考本科&#xff0c;主要测试方向web&#xff0c;PC端&#xff0c;wap站&#xff0c;小程序公众号都测试过&#xff0c;app也测过一些&#xff0c;C端B端都有&#xff0c;除功能外&#xff0c;接口性能也有涉猎&#xff0c;但是不能…

kafka--多易杰哥讲解

Kafka是一种分布式的流式数据平台&#xff0c;广泛应用于实时流数据处理和消息系统。它可以让处理数据的应用程序能够处理高流量的数据流&#xff0c;同时提供可靠性和可扩展性。 【多易教育】-Kafka文档 1.基本概念 1.1什么是kafka Kafka 最初是由 LinkedIn 即领英公司…

教你如何用fiddler抓取https(详细教程)

对于想抓取HTTPS的测试初学者来说&#xff0c;常用的工具就是fiddler&#xff0c;可是在初学时&#xff0c;大家对于fiddler如何抓取HTTPS真是伤了脑筋&#xff0c;可能你一步步按着网上的帖子成功了&#xff0c;那当然是极好的&#xff0c;有可能没有成功&#xff0c;这时候你…

前端基础(JavaScript)——基础语法(变量,分支...) Json对象【重要】 函数定义 事件(未完待续)

目录 引出JS是啥&#xff0c;能干啥基础语法1.变量----let2.怎么打印---console3.if条件分支--啥都可以是条件例子&#xff1a;输入框&#xff0c;打印输入和未输入4.数组push 和 splice&#xff08;2&#xff09;splice&#xff0c;3个参数&#xff0c;索引开始、删除几个&…

广域网技术

广域网互连一般采用在网络层进行协议转换的方法实现。时延网关&#xff0c;更确切的说是路由器。 无连接的网际互连&#xff1a; 在网际层提供路由信息的是路由表&#xff0c;每个站或者路由器中都有一个网际路由表&#xff0c;表的每一行说明一个目标站对应的路由器地址。 路…

如何在Ubuntu20.04中配置 libarchive 库

libarchive 是什么&#xff1f; libarchive是一个开源的压缩和归档库。 它支持实时访问多种压缩文件格式&#xff0c;比如7z、zip、cpio、pax、rar、cab、uuencode等&#xff0c;因此应用十分广泛。 举个例子&#xff0c;我写了一段代码&#xff0c;想要解压一个压缩包&#…

HARVEST基音检测算法

Harvest: A high-performance fundamental frequency estimator from speech signals一种基于语音信号的高性能基频估计算法 Harvest的独特之处在于可以获得可靠的F0轮廓&#xff0c;减少了将浊音部分错误地识别为清音部分的错误。 它包括两个步骤:估计F0候选点和在这些候选点…

17JS08——函数

函数 一、函数的概念二、函数的使用2.1 声明函数2.2 调用函数2.3 函数的封装 三、函数的参数3.1 形参和实参3.2 形参和实参个数不匹配问题3.3 小结 四、函数的返回值4.1 return语句4.2 return终止函数4.3 break、continue、return的区别4.4 案例 五、arguments的使用案例1&…

案例30:基于Springboot酒店管理系统开题报告设计

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

Java-多线程解析1

一、线程的描述&#xff1a; 1、线程是一个应用程序进程中不同的执行路径比例如&#xff1a;一个WEB服务器&#xff0c;能够为多个用户同时提供请求服务&#xff1b;而 -> 进程是操作系统中正在执行的不同的应用程序,比如&#xff1a;我们可以同时打开系统的word和游戏 2、多…

Tomcat优化及Nginx、tomcat动静分离配置

Tomcat优化及Nginx、tomcat动静分离配置 一、Tomcat优化1、操作系统优化&#xff08;内核参数优化&#xff09;2、Tomacat配置文件优化3、Java虚拟机&#xff08;JVM&#xff09;调优 二、Nginx、tomcat动静分离配置(七层代理)三、四层代理 一、Tomcat优化 Tomcat默认安装下的…

八、进程等待

文章目录 一、进程创建&#xff08;一&#xff09;fork函数概念1.概念2.父子进程共享fork之前和fork之后的所有代码&#xff0c;只不过子进程只能执行fork之后的&#xff01; &#xff08;二&#xff09;fork之后&#xff0c;操作系统做了什么?1.进程具有独立性&#xff0c;代…