Linux中的无人值守安装脚本Kickstart

目录

 一.kickstart自动安装脚本的作用 

在企业中安装多台操作系统时面临的问题

如何解决以上问题?

二.实验环境

三.kickstart自动安装脚本的制作 

通过模板生成kickstart文件

1.安装图形化生成kickstart自动安装脚本的工具

2.图形化工具配置流程

 3.配置文件详细介绍

 4.将编好的文件共享出去

5.在环境内搭建dhcp

6.测试安装 

 7.搭建pxe网络安装环境实现服务器自动部署

 启动tftp服务

 将光驱系统安装界面的所有内容全部考到tftp的共享目录下面

 修改dhcp配置文件

重启dhcp服务  

修改/var/lib/tftpboot/pxelinux.cfg/default配置文件

测试安装


 .kickstart自动安装脚本的作用 

在企业中安装多台操作系统时面临的问题

当安装 Linux 操作系统时 安装过程会需要回答很多关于设定的问题
这些问题必须手动选择 否则无法进行安装
当只安装 1 Linux 系统 手动选择设定工作量比较轻松
当安装多台 Linux 这些设定需要重复多次 这些重复动作是效率底下的操作

如何解决以上问题

用文件来记录所有安装过程中问题的答案 并让所有需要安装的主机自动读取
kickstart 作用
以上解决方案中记录系统安装过程中所有问题答案的文件叫 kickstart 脚本

二.实验环境

1.准备一台带图形化界面的centos7或者rhel7操作系统设备,init 5可以打开图形化界面,

[root@centos-pxe yum.repos.d]# hostnamectl Static hostname: centos-pxeIcon name: computer-vmChassis: vmMachine ID: e0ddc8253f6c49c789414991b782f7afBoot ID: 2006210e125e4ab9acb15f4deb7d49caVirtualization: vmwareOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-1160.el7.x86_64Architecture: x86-64

2.关闭防火墙和selinux

[root@centos-pxe ~]# systemctl stop firewalld.service 
[root@centos-pxe ~]# setenforce 0
[root@centos-pxe ~]# getenforce 
Permissive

3.开启httpd服务

[root@centos-pxe ~]# systemctl enable httpd.service --now
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.# 开启http服务并且开机自启

4.软件仓库可以正常使用

[root@centos-pxe yum.repos.d]# mkdir /centos7
[root@centos-pxe yum.repos.d]# mount /dev/sr0 /centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos-pxe yum.repos.d]# vim centos7.repo
[root@centos-pxe yum.repos.d]# cat centos7.repo 
[centos7]
name=centos7
baseurl=file:///centos7
gpgcheck=0[root@centos-pxe yum.repos.d]# yum makecache 
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
centos7                                                   | 3.6 kB  00:00:00     
(1/4): centos7/group_gz                                   | 153 kB  00:00:00     
(2/4): centos7/filelists_db                               | 3.3 MB  00:00:00     
(3/4): centos7/primary_db                                 | 3.3 MB  00:00:00     
(4/4): centos7/other_db                                   | 1.3 MB  00:00:00     
元数据缓存已建立
# 我配置的是本地yum仓库

 5.配置网络

[root@centos-pxe ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.10.147  netmask 255.255.255.0  broadcast 192.168.10.255inet6 fe80::93fe:ed96:289:28db  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:93:13:3e  txqueuelen 1000  (Ethernet)RX packets 39289  bytes 27913680 (26.6 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 23370  bytes 1452053 (1.3 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

6 关闭vmware dhcp功能

注: 该主机使用的是nat网络,在后续制作过程中需要使用到dhcp,所以需要将虚拟网络编辑器中nat模式下的dhcp服务关闭。(不关闭的话,如果其他主机在发送ip请求时它会相应,此时如果在系统内再装一个dhcp的话,就不知道到底是谁在将ip下发出去了)

三.kickstart自动安装脚本的制作 

rhel7 系统中提供图形的 kickstart 制作方式
rhel8 中已经把图形的工具取消 并添加到 rhn 网络中
rhel8 中如果无法通过 rhn 网络制作 kickstart 可以使用模板生成

通过模板生成kickstart文件

在已经装好的centos7 / root / anaconda - ks.cfg 就是安装当前系统时回答的所有问题的答案
生成的 kickstart(例如当时安装系统你划分的分区,root密码,安装软件,时区等等一些问题) 此文件为 kickstart 模板
[root@centos-pxe ~]# ll
总用量 8
-rw-------. 1 root root 1560 3月  10 12:01 anaconda-ks.cfg
# 此文件是在系统安装好后自动生成的, 这个文件记录了系统在安装过程中的所有设定
-rw-r--r--. 1 root root 1591 3月  10 12:02 initial-setup-ks.cfg
drwxr-xr-x. 2 root root    6 8月   5 12:23 公共
drwxr-xr-x. 2 root root    6 8月   5 12:23 模板
drwxr-xr-x. 2 root root    6 8月   5 12:23 视频
drwxr-xr-x. 2 root root    6 8月   5 12:23 图片
drwxr-xr-x. 2 root root    6 8月   5 12:23 文档
drwxr-xr-x. 2 root root    6 8月   5 12:23 下载
drwxr-xr-x. 2 root root    6 8月   5 12:23 音乐
drwxr-xr-x. 2 root root    6 8月   5 12:23 桌面
[root@centos-pxe ~]# pwd
/root

1.安装图形化生成kickstart自动安装脚本的工具

[root@centos-pxe ~]# yum install system-config-kickstart -y
# 安装 
[root@centos-pxe ~]# system-config-kickstart 
# 启动图形制作工具

2.图形化工具配置流程

[root@centos-pxe ~]# ln -s /centos7/ /var/www/html/
[root@centos-pxe ~]# cd /var/www/html/
[root@centos-pxe html]# ll
总用量 0
lrwxrwxrwx. 1 root root 9 8月   5 13:44 centos7 -> /centos7/# 创建一个名为 centos7 的符号链接在 /var/www/html/ 目录下,这个链接指向 /centos7/ 目录。

 

 注:本次实验采用http的方式,也可以使用其他的方式,http服务器就是该主机的ip,目录就是我环境准备挂载光盘的目录,并且在/var/www/html/下做了软连接,浏览器通过输入ip和/centos7,可以实现正常访问。

 

 注:可选可不选

注:如果是以上情况,可以后续在脚本里面添加软件包

 

注:在系统安装好后自动下载创建的内容,可写可不写,后续也可在脚本里面添加 

 

 

 3.配置文件详细介绍

[root@centos-pxe ~]# vim ks.cfg #platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$l5ipMk3f$qh24rI2QriIAbFH7bv4671  # 密码是加密的
# System languagelang zh_CN   # 中文语言
# System authorization information
auth  --useshadow  --passalgo=sha512   # 加密方式
# Use text mode install
text  # 安装过程中不开图形化界面
# SELinux configuration
selinux --disabled    # selinux状态
# Do not configure the X Window System
skipx# Firewall configuration
firewall --disabled  # 防火墙状态
# Network information
network  --bootproto=dhcp --device=ens33  #网络设定
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# Use network installation
url --url="http://192.168.10.147/centos7"  # 安装源
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part /boot --fstype="xfs" --size=1024       #/boot分区大小为1024M
part swap --fstype="swap" --size=512        #swap分区大小为512M
part / --fstype="xfs" --grow --size=1       # swap分区大小为500M%packages
@base     #安装软件组base
httpd     #安装单个软件httpd
%end%post                  # 系统安装后自动执行的脚本
mkdir -p /centos7echo mount /dev/sr0 /centos7 >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.localcat > /etc/yum.repos.d/centos7.repo<<EOF[centos7]
name=centos7
baseurl=file:///centos7
gpgcheck=0
EOFyum insatall gcc -y
%end

修改完配置文件后检测语法是否正确

[root@centos-pxe ~]# ksvalidator ks.cfg 

 4.将编好的文件共享出去

通过http的方式将文件共享出现,需要安装的设备通过http来读取文件,实现自动安装

[root@centos-pxe ~]# cp /root/ks.cfg /var/www/html/
# 将文件拷贝到apache的共享目录下
[root@centos-pxe ~]# ll /var/www/html/
总用量 4
lrwxrwxrwx. 1 root root    9 8月   5 13:44 centos7 -> /centos7/
-rw-r--r--. 1 root root 1240 8月   5 14:46 ks.cfg

5.在环境内搭建dhcp

为其他服务器提供分配ip的功能,前提是其他的网卡必须设定成dhcp模式

让被安装的主机可以获得ip来访问网络资源及kickstart文件

[root@centos-pxe ~]# yum install dhcp -y[root@centos-pxe ~]# rpm -qc dhcp   # 查看dhcp的配置文件有那些
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@centos-pxe ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
[root@centos-pxe ~]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? ^Z
[1]+  已停止               cp -i /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
# dhcp配置文件为空,根据提示将模板复制到配置文件内,即用命令来生成配置文件
[root@centos-pxe ~]# \cp  -f /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf 

补充: 

  • cp是复制文件或目录的命令。
  • \cp并不是一个新的命令,而是cp命令前加了一个转义字符\,用于在某些特殊情况下(如绕过别名)直接调用cp命令的原始行为。

注: 因为是多个文件拷贝到统一文件,所有与无用的配置文件可以干掉。

从37行后的内容可以删掉, 并且注释27,28行的内容 

配置dhcp配置文件

[root@centos-pxe ~]# vim /etc/dhcp/dhcpd.conf 
# dhcpd.conf2 #3 # Sample configuration file for ISC dhcpd4 #5 6 # option definitions common to all supported networks...7 option domain-name "example.org";   # 公司名称8 option domain-name-servers 114.114.114.114; 9 # dhcp工作模式的网络主机获得的dns的地址,这就是我们往外分发网络资源带的dns的地址10 default-lease-time 600;    # 默认租约期,就是我个他发个ip他可以使用的时间,默认是600小时11 max-lease-time 7200;       # 最长租约期, 默认是7200小时12 13 # Use this to enble / disable dynamic dns updates globally.14 #ddns-update-style none;15 16 # If this DHCP server is the official DHCP server for the local17 # network, the authoritative directive should be uncommented.18 #authoritative;19 20 # Use this to send dhcp log messages to a different log file (you also21 # have to hack syslog.conf to complete the redirection).22 log-facility local7;   # 定义我们的log的日志格式,为loacal723 24 # No service will be given on this subnet, but declaring it helps the 25 # DHCP server to understand the network topology.26 27 #subnet 10.152.187.0 netmask 255.255.255.0 {28 #}29 30 # This is a very basic subnet declaration.31 # 网段32 subnet 192.168.10.0 netmask 255.255.255.0 {33   range 192.168.10.150  192.168.10.160;         # 分配ip的范围34   option routers 192.168.10.2;  # 网关路由35 }

 重启dhcp服务

[root@centos-pxe ~]# systemctl restart dhcpd

6.测试安装 

新建一个虚拟机,正常操作,在系统安装基面选择第二给,按tab键,在末行输入,ks=http://192.168.10.147/ks.cfg  然后按下enter键,之后全程自动执行。

 

完成,root密码就是在图形化界面你自己设置的密码

 7.搭建pxe网络安装环境实现服务器自动部署

[root@centos-pxe ~]# yum search pxelinux
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
================================ 匹配:pxelinux =================================
syslinux.x86_64 : Simple kernel loader which boots from a FAT filesystem
syslinux-extlinux.x86_64 : The EXTLINUX bootloader, for booting the local system.
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for: network booting# 搜索与 pxelinux 相关的软件包[root@centos-pxe ~]# yum install syslinux.x86_64 -y   # 环境所需要的最基本程序
[root@centos-pxe ~]# yum install tftp-server.x86_64 -y # 共享pxelinux.0数据文件的网络服务
 启动tftp服务
[root@centos-pxe ~]# rpm -ql tftp-server  # 找到tptp服务的启动程序
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service  #启动程序
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gzf
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot    # tftp的共享目录[root@centos-pxe ~]# systemctl enable --now tftp
Created symlink from /etc/systemd/system/sockets.target.wants/tftp.socket to /usr/lib/systemd/system/tftp.socket.
 将光驱系统安装界面的所有内容全部考到tftp的共享目录下面
[root@centos-pxe tftpboot]# df -h
文件系统                           容量  已用  可用 已用% 挂载点
devtmpfs                           470M     0  470M    0% /dev
tmpfs                              487M     0  487M    0% /dev/shm
tmpfs                              487M  8.5M  478M    2% /run
tmpfs                              487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos_centos--7-root   16G  5.2G   11G   33% /
/dev/sda1                          397M  160M  238M   41% /boot
tmpfs                               98M   64K   98M    1% /run/user/0
/dev/sr0                           4.4G  4.4G     0  100% /centos7[root@centos-pxe ~]# cp /centos7/isolinux/* /var/lib/tftpboot/   
isolinux/目录包含了启动过程中所需的文件,比如内核映像(vmlinuz)、初始RAM磁盘(initrd或initramfs)、配置文件(如isolinux.cfg)以及其他必要的启动支持文件。
[root@centos-pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
,该文件是一个预启动执行环境(PXE)的启动加载器,也称为网络引导程序(NBP)
[root@centos-pxe ~]# cd /var/lib/tftpboot/
[root@centos-pxe tftpboot]# ls
boot.cat  grub.conf   isolinux.bin  memtest     splash.png  vesamenu.c32
boot.msg  initrd.img  isolinux.cfg  pxelinux.0  TRANS.TBL   vmlinuz
[root@centos-pxe tftpboot]# mkdir pxelinux.cfg    # 建立数据目录,数据文件
[root@centos-pxe tftpboot]# cp isolinux.cfg pxelinux.cfg/default

注:

  1. 启动加载器:在网络启动过程中,PXE 客户端(即待安装操作系统的计算机)会向网络中的 DHCP 服务器请求 IP 地址和启动文件的位置。DHCP 服务器会响应一个包含 next-server(TFTP 服务器地址)和 filename(通常是 pxelinux.0)的响应。然后,PXE 客户端会从指定的 TFTP 服务器下载 pxelinux.0 文件并执行它。

  2. 配置和执行:一旦 pxelinux.0 被加载到内存中并执行,它会查找 TFTP 服务器上的配置文件(通常位于 /var/lib/tftpboot/pxelinux.cfg/ 目录下),并根据配置文件的指令来加载内核映像、初始 RAM 磁盘和其他必要的文件,以启动操作系统安装程序。

 修改dhcp配置文件
[root@centos-pxe ~]# cat /etc/dhcp/dhcpd.conf 
# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
## option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 114.114.114.114;default-lease-time 600;
max-lease-time 7200;# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.#subnet 10.152.187.0 netmask 255.255.255.0 {
#}# This is a very basic subnet declaration.subnet 192.168.10.0 netmask 255.255.255.0 {range 192.168.10.150  192.168.10.160;option routers 192.168.10.2;next-server 192.168.10.147;   #指向下面的服务器,就是tftp所在的主机。filename "pxelinux.0";        # 在next-server上你要读取那个文件
}
重启dhcp服务  
[root@centos-pxe ~]# systemctl restart dhcpd
修改/var/lib/tftpboot/pxelinux.cfg/default配置文件

注: 第63行 menu default 是默认选择,默认是第二个,可以修改成第一个

        第65行,安装资源,将img后的内容删除,修改为http共享内容,写上其地址,以及ks=加       http共享目录下的资源  ,可以选择自动进入时间,默认是60s

测试安装

为了看到更加清晰,可以将原先的镜像直接移除

打开电源时进入固体 

 选择网络启动

 

扩充: linux下的int0到6的知识介绍

一. init是Linux系统操作中不可缺少的程序之一。
所谓的init进程,它是一个由内核启动的用户级进程。

内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。

所以,init始终是第一个进程(其进程编号始终为1)。

内核会在过去曾使用过init的几个地方查找它,它的正确位置(对Linux系统来说是/sbin/init。

如果内核找不到init,它就会试着运行/bin/sh,如果运行失败,系统的启动也会失败。                       

0:停机或者关机(千万不能将initdefault设置为0)

init 0,对应的系统会运行,/etc/rc.d/rc0.d里指定的程序

开机会执行的两个进程是killall和halt,这两个都表示为终止进程。

1:单用户模式,只root用户进行维护

init 1,对应的系统会运行,/etc/rc.d/rc1.d里指定的程序。

这个级别启动的服务有三个,udev、lvm相关的和single(单用户模式的服务)。

故此级别是单用户模式,只有root能用,不支持其他用户。

2:多用户模式,不能使用NFS(Net File System)

init 2,对应的系统会运行,/etc/rc.d/rc2.d里指定的程序。

3:完全多用户模式(标准的运行级别)

init 3 , 对应的系统运行/etc/rc.d/rc3.d

这个级别nfs服务是开启的,被成为完全多用户模式。

4:安全模式

init 4,对应的系统会运行,/etc/rc.d/rc4.d里指定的程序。

5:图形化(即图形界面)

init 5,对应的系统会运行,/etc/rc.d/rc5.d里指定的程序。

6:重启(千万不要把initdefault设置为6)

init 6,对应的系统会运行,/etc/rc.d/rc6.d里指定的程序。

这个级别里,只有两个服务,一个为killall,一个是reboot,即,关闭现在的系统,重启。故此级别是重启。

不同的系统版本,可能里面的文件会不同,如果要查看,可以通过ll来看,其实他们都是软连接。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣热题100_二叉树_94_二叉树的中序遍历

文章目录 题目链接解题思路解题代码 题目链接 94. 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 示例 2&#xff1a; 输入&#xff1a;root [] 输…

C#中重写tospring方法

在C#中&#xff0c;重写ToString方法允许你自定义对象的字符串表示形式。当你想要打印对象或者在调试时查看对象的状态时&#xff0c;重写ToString方法非常有用。 默认情况下&#xff0c;ToString方法返回对象的类型名称。通过重写这个方法&#xff0c;你可以返回一个更有意义…

sqli 1- 10

sql靶场 第一关 首先我们需要判断是否存在sql注入点&#xff0c;前端界面提示我使用ID作为参数,在url地址栏输入?id1 通过输入不同的id值查询数据库相对应的内容&#xff0c;之后判断为数字型还是字符型 根据查询内容判断为字符型且有注入点&#xff0c;再通过联合查询&…

#71结构体案例2(三国游戏,冒泡排序)

效果&#xff1a; 代码&#xff1a; #include <iostream> #include <string> using namespace std;//英雄结构体 struct Hero {string name;int age;string gender; };//冒泡排序 void bubbleSort(struct Hero hArray[],int len) {for(int i0;i<len-1;i){for(i…

首届中文NL2SQL挑战赛亚军比赛攻略_BugCreater

关联比赛: 首届中文NL2SQL挑战赛 1. 任务描述 本次比赛的任务&#xff1a;根据Question、表格信息&#xff08;包含列名、列类型、内容&#xff09;&#xff0c;预测对应的SQL语句&#xff08;下图黄色部分&#xff09;。比赛只涉及单表查询&#xff0c;需要预测的有4部分&a…

什么是DDoS攻击?怎么防御DDoS攻击?

在网络安全领域&#xff0c;DDoS 攻击一直是热门话题&#xff0c;随着网络技术的不断发展和网络环境的复杂化演变&#xff0c;DDoS 攻击变得愈加频繁、更具破坏性。根据 2023 年网络安全态势研判分析年度综合报告&#xff0c;全年全网网络层的 DDoS 攻击次数达 2.51 亿次&#…

【Kubernetes】k8s集群的pod基础

目录 一.Pod概述 1.什么是pod 2.k8s中pod的两种使用方式 3.pod容器的常规使用流程 4.创建pod的3种方式 二.Pod中容器概述 1.容器分类 2.Pod容器的3种镜像拉取策略 3.Pod容器的3种重启策略 4.pod的dns策略 一.Pod概述 1.什么是pod Pod是kubernetes中最小的资源管理组…

MySQL深分页和浅分页

前言 最近有面试过也遇到了问关于深分页问题&#xff0c;在这里简单从MySQL、ES等方面分享一下自己对该问题认识和总结。 一、深分页定义 可以从ES定义上来划分浅分页和深分页的边界&#xff0c;即页数超过10000页为深分页&#xff0c;少于10000页为浅分页。 二、MySQL深分…

初学Ubuntu及遇到的问题

初学Ubuntu及遇到的问题 Ubuntu的安装 1.安装VMware Workstation Pro&#xff08;网上有很多资料&#xff0c;本文就不细说啦~~~&#xff09; 2.在Ubuntu官网下载iso文件>https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ iso文件随便放在哪个位置&#xff…

内网穿透原理,免费内网穿透(简单使用),公网主动访问内网。

内网穿透的本质就是流量转发&#xff0c;把一个电脑的网卡上的流量数据&#xff0c;转发到另一个网卡的流量数据。 实现原理 网络协议分层就是&#xff0c;物理层&#xff0c;数据链路层&#xff0c;网络层&#xff0c;传输层&#xff0c;应用层。我简单解释一下这些分层协议…

消灭星星游戏程序设计【连载十】——小星星的残影轨迹

消灭星星游戏程序设计【连载十】——小星星的残影轨迹 大家每次都可以在页面中下载本节内容的实现代码&#xff0c;一步一步从简单开始&#xff0c;逐步完成游戏的各种功能&#xff0c;如果大家有任何问题也欢迎留言交流。 游戏整体效果展示&#xff1a; 1、本节要达到的效果 …

MyBatis快速学习

目录 前言 MyBatis的具体使用 一些小工具&#xff1a;MyBatisX 常见问题&#xff1a; 1.表中字段名和实体属性名不一致 2.按条件查询&#xff08;单条件&#xff09;时的&#xff0c;查询条件怎么编写 3.按条件查询&#xff08;多条件&#xff09; 4.多条件查询时&…

pywinauto:Windows桌面应用自动化测试(七)

前言 上一篇文章地址&#xff1a; pywinauto&#xff1a;Windows桌面应用自动化测试&#xff08;六&#xff09;-CSDN博客 下一篇文章地址&#xff1a; 暂无 一、实战常用方法 1、通过Desktop快速获取窗口 通过之前章节我们了解到控制应用的方法为Application&#xff0…

10、springboot3 vue3开发平台-前端-elementplus, axios配置及封装使用, 包含token 存储

1. 准备工作 1.1 清除项目自带页面 删除views和components目录下所有东西&#xff1a; 1.2 修改App.vue <script setup lang"ts"></script><template><router-view></router-view> </template><style scoped></st…

基于R语言绘制GGE双标图2

参考资料&#xff1a; 严威凯等: 双标图分析在农作物品种多点试验中的应用【作物学报】 https://cran.r-project.org/web/packages/GGEBiplots/GGEBiplots.pdf 1、如何判断双标图是否充分体现数据中的规律 在对双标图的解释中&#xff0c;有一个隐含的假设&#xff0c;就是所…

COFFEE AI PARTNER -- 神奇的AI工具,相当我雇佣了一个AI员工,淘汰你的是会使用AI的人

COFFEE AI PARTNER介绍 COFFEE AI PARTNER是由 AI JAVA开发的一款生成式人工智能工具&#xff08;又名AI助手&#xff09;&#xff0c;尝试一下。 首先域名似乎正在备案中&#xff0c;企业邮箱似乎正在采购&#xff0c;目前服务地址是&#xff1a;COFFEE AI PARTNER-官网 官网…

git安装图文

1.下载 通过百度网盘分享的文件&#xff1a;git安装图文 链接&#xff1a;https://pan.baidu.com/s/17ZMiWUIULtrGGba5n-WLeA 提取码&#xff1a;anjm --来自百度网盘超级会员V3的分享 2.安装

【C语言篇】猜数字游戏(赋源码)

文章目录 猜数字游戏前言随机数生成randsrandtime设置随机数生成范围 猜数字游戏的实现 猜数字游戏 前言 在前两篇博客对于分支和循环语句进行了详细的介绍&#xff1a; 分支语句详解 循环语句详解 我们就可以写一写稍微有趣的代码了&#xff0c;比如&#xff1a; 写一个…

二分查找法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

SQL各种注入详解加案例--持续更新

sql注入 联合查询注入案例手工注入判断是否有SQL注入漏洞 sqlmap工具注入 报错注入常用的函数updatexml()函数案例 floor()涉及的函数实现手工注入sqlmap工具注入 盲注布尔盲注案例手工注入脚本sqlmap自动化工具 时间盲注 post注入GET传参和POST传参案例手工注入sqlmap工具 二次…