总结raid 0, 1, 5, 10, 01的工作原理。总结各自的利用率,冗余性,性能,至少几个硬盘实现。
RAID 0
工作原理:RAID 0通过条带化(striping)技术将数据分散存储到多个硬盘上,即数据的每个部分都存储在不同的硬盘上,以提高读取和写入速度。
利用率:100%。所有硬盘的容量都可以被利用,没有容量损失。
**冗余性:**无。RAID 0不提供任何数据冗余,如果任何一个硬盘故障,所有数据都将丢失。
性能:高。由于数据分散存储,可以并行读取和写入多个硬盘,因此性能较高。
最少硬盘数:2个。
RAID 1
工作原理:RAID 1通过镜像(mirroring)技术将数据同时写入到两个或多个硬盘上,每个硬盘都包含完整的数据副本。
利用率:50%(对于两个硬盘)。因为只有一半的硬盘容量被用于实际数据存储,另一半用于数据镜像。
冗余性:高。如果任何一个硬盘故障,另一个硬盘上的数据副本仍然可用,确保数据不丢失。
性能:中。虽然读取性能可能因可以从多个硬盘同时读取而有所提升,但写入性能通常较低,因为数据必须写入所有镜像硬盘。
最少硬盘数:2个。
RAID 5
工作原理:RAID 5通过条带化和分布式奇偶校验(distributed parity)技术将数据分散存储到多个硬盘上,并在硬盘上存储校验信息以提供数据冗余。
利用率:N-1/N(N为硬盘数)。因为一部分硬盘空间用于存储校验信息,所以实际可用容量略小于总容量。
冗余性:中。RAID 5可以容忍一个硬盘故障而不丢失数据,但如果多个硬盘同时故障,数据可能会丢失。
性能:中。读取性能通常较高,因为可以并行从多个硬盘读取数据。写入性能可能较低,因为需要计算并存储校验信息。
最少硬盘数:3个。
RAID 10
工作原理:RAID 10实际上是RAID 1+0的结合,即首先将数据镜像成两组,然后将这两组镜像条带化到多个硬盘上。
利用率:50%。因为RAID 10先进行镜像,所以其利用率与RAID 1相同。
冗余性:高。RAID 10可以容忍每组镜像中的一个硬盘故障而不丢失数据。
性能:高。由于结合了RAID 1的镜像和RAID 0的条带化,RAID 10在提供数据冗余的同时,也保持了较高的性能。
最少硬盘数:4个(两个硬盘用于每组镜像)。
RAID 01
工作原理:RAID 0+1实际上是RAID 0+RAID 1的结合,即首先将数据条带化到多个硬盘上,然后再对整个条带化后的数据进行镜像。
利用率:50%。因为RAID 0+1后进行镜像,所以其利用率与RAID 1相同。
冗余性:高。RAID 0+1可以容忍任何一组(条带化+镜像)中的一个硬盘故障而不丢失数据。
性能:中。虽然读取性能可能较高,但由于需要先将数据条带化再进行镜像,写入性能可能不如RAID 10。
最少硬盘数:4个(至少两个硬盘用于条带化,然后再进行镜像)。
完成对LVM磁盘扩容及缩容示例。
LVM磁盘扩容
假设你有一个名为myvg的卷组,并且你想要将一个新的物理卷/dev/sdb1添加到这个卷组中,并扩展名为mylv的逻辑卷。
将新的物理卷添加到卷组
首先,你需要将新的物理卷添加到卷组中:
sudo vgextend myvg /dev/sdb1
扩展逻辑卷
接下来,你可以扩展逻辑卷以使用新添加的空间:
sudo lvextend -L +10G /dev/myvg/mylv
在这个例子中,我们为mylv增加了10GB的空间。你可以根据需要调整这个大小。
3. 调整文件系统大小
如果逻辑卷上有一个文件系统(例如ext4),你还需要调整文件系统的大小以使用新添加的空间:
sudo resize2fs /dev/myvg/mylv
对于XFS文件系统,使用:
sudo xfs_growfs /dev/myvg/mylv
LVM磁盘缩容
缩容操作相对复杂,因为你需要首先缩小文件系统,然后缩小逻辑卷,最后可能还需要从卷组中删除物理卷。
缩小文件系统
首先,你需要确保文件系统上有足够的未使用空间,然后使用相应的工具来缩小文件系统。例如,对于ext4文件系统:
sudo resize2fs /dev/myvg/mylv 20G
这将把文件系统大小调整为20GB。请确保调整的大小不会导致数据丢失。
2. 缩小逻辑卷
接下来,你可以缩小逻辑卷:
sudo lvresize -L 20G /dev/myvg/mylv
这将把逻辑卷大小调整为20GB。同样,请确保调整的大小不会导致数据丢失。
3. 从卷组中删除物理卷(如果需要)
如果你希望从卷组中删除某个物理卷,并且这个物理卷上没有分配任何逻辑卷空间,你可以这样做:
sudo vgreduce myvg /dev/sdb1
这将从myvg卷组中删除/dev/sdb1物理卷。请注意,如果物理卷上仍有逻辑卷空间,你将无法删除它,除非你先移动或删除这些逻辑卷。
总结程序包管理器有哪些,以及包中包含什么内容的文件,尝试这些文件如何获取命令获取? 总结yum/dnf/apt程序包获取途径,以及rpm, yum, apt命令选项示例。
常见的程序包管理器包括:
RPM : 主要用于Red Hat及其衍生版本(如CentOS和Fedora)。RPM包以.rpm为扩展名。
YUM : 是基于RPM的一个更高级的软件包管理工具,它自动解决了依赖关系,并可以从多个存储库中检索和安装软件包。
DNF : 是YUM的一个改进版本,提供了更快的依赖解析和更强大的功能。Fedora和一些其他发行版开始使用DNF代替YUM。
APT: 主要用于Debian及其衍生版本(如Ubuntu)。APT包以.deb为扩展名。APT使用一系列的命令和工具来处理软件包,包括apt-get、apt-cache和apt-config。
包中包含的文件内容
每个软件包通常包含以下类型的文件:
二进制文件:程序的执行文件。
库文件:程序运行所需的共享库。
配置文件:程序的配置文件,用于设置程序的运行参数。
文档和手册页:关于程序使用的说明文档。
其他辅助文件:如示例、脚本等。
如何获取包中的文件
要查看RPM包中的文件列表,可以使用rpm -qlp package_name.rpm命令。
对于APT和DNF/YUM,通常需要先安装软件包,然后使用dpkg -L package_name(对于APT)或rpm -ql package_name(对于通过YUM/DNF安装的RPM包)来查看已安装软件包的文件列表。
YUM/DNF/APT程序包获取途径
YUM/DNF:
默认从/etc/yum.repos.d/或/etc/dnf/dnf.conf中定义的存储库获取软件包。
可以添加或删除存储库配置文件来更改获取软件包的来源。
APT:
默认从/etc/apt/sources.list和/etc/apt/sources.list.d/中定义的存储库获取软件包。
使用add-apt-repository命令可以添加新的存储库。
命令选项示例
RPM
说明 | 命令 |
---|---|
安装 | rpm -ivh package_name.rpm |
卸载 | rpm -e package_name |
查询 | rrpm -q package_name |
YUM
说明 | 命令 |
---|---|
安装 | yum install package_name |
更新 | yum update package_name |
卸载 | yum remove package_name |
搜索 | yum search keyword |
DNF (与YUM命令非常相似)
说明 | 命令 |
---|---|
安装 | dnf install package_name |
其他命令与YUM类似,但DNF通常更快且更强大。
APT
说明 | 命令 |
---|---|
安装 | apt-get install package_name 或 apt install package_name |
更新 | apt-get update && apt-get upgrade 或 apt update && apt upgrade |
卸载 | apt-get remove package_name 或 apt remove package_name |
搜索 | apt-cache search keyword 或 apt search keyword |
简要总结yum/dnf工作原理。并搭建私有yum仓库(base, epel源)给另一个虚拟机使用。
YUM/DNF工作原理总结
YUM(Yellowdog Updater Modified)和DNF(Dandified YUM)都是Linux发行版中的软件包管理工具,主要用于自动化地安装、更新、配置和删除软件包。
搭建私有YUM仓库
- 准备软件包:首先,收集需要放到私有仓库中的RPM软件包,这些软件包可以来自官方仓库或其他来源。
- 创建仓库目录:在服务器上创建一个目录作为私有仓库的根目录,例如/opt/yumrepo。
- 生成仓库元数据:使用createrepo命令生成仓库的元数据。这个命令会扫描指定目录下的RPM软件包,并生成相应的元数据文件。例如,执行createrepo
/opt/yumrepo命令。 - 配置Nginx或Apache作为HTTP服务器:为了让其他虚拟机能够访问私有仓库,需要配置一个HTTP服务器来提供文件服务。可以使用Nginx或Apache等Web服务器软件来实现。
- 配置yum仓库:在需要使用私有仓库的虚拟机上,编辑/etc/yum.repos.d/目录下的.repo文件,添加私有仓库的配置信息。包括仓库的ID、名称、基础URL(指向HTTP服务器上的仓库目录)等。
- 测试仓库:在虚拟机上执行yum clean all和yum makecache命令,清除旧的缓存并生成新的缓存。然后尝试安装或查询软件包,以验证私有仓库是否正常工作。
总结系统安装之后的常用初始化步骤。rocky/ubuntu
Rocky/CentOS/RHEL 初始化
关闭防火墙
systemctl disable --now firewalld 关闭默认内置的防火墙策略,但仍可以自定义策略
关闭SELinux
nano /etc/selinux/config
SELINUX=disabled
reboot
实现邮件通信
yum -y install postfix mailx
systemctl enable --now postfix
常用软件:
yum -y install bash-completion psmisc lrzsz tree man-pages redhat-lsb-core zip unzip bzip2 wget tcpdump ftp rsync vim lsof
网卡NAT
地址:10.0.0.X/24 GATEWAY:10.0.0.2,dns:10.0.0.2,180.76.76.76
名称修改:ethX
解读一键安装httpd脚本,并自行实现一个一键安装脚本**, 要求 1)基于位置变量传递版本号 2)基于独立函数进行初始化步骤,禁用防火墙,安装开发依赖包。 3)基于独立函数进行下载包,解压包。 4)基于独立函数进行编译,安装包。 5)基于独立函数完成链接包。 6)启动服务,并输出自定义的语句,安装xxx服务
#!/bin/bash
# 初始化函数
initialize() {
# 禁用防火墙
systemctl disable --now firewalld
# 安装开发依赖包
yum install -y wget openssl-devel pcre-devel apr-devel apr-util-devel
}
# 下载和解压函数
download_and_extract() {
local version=$1
local tarball="httpd-$version.tar.bz2"
local dir="httpd-$version"
# 下载源码包
wget "https://archive.apache.org/dist/httpd/httpd-$version.tar.bz2" -O "$tarball"
# 解压源码包
tar -xf "$tarball"
# 进入解压后的目录
cd "$dir" || exit 1
}
# 编译和安装函数
compile_and_install() {
# 配置编译选项(这里使用默认选项,你可以根据需要调整)
./configure --prefix=/usr/local/apache2
# 编译和安装
make
make install
}
# 链接函数(如果需要的话,比如创建软链接到/usr/sbin等)
link_packages() {
# 你可以在这里添加链接包的命令,如果需要的话
# 例如:ln -s /usr/local/apache2/bin/httpd /usr/sbin/httpd
}
# 启动服务函数
start_service() {
/usr/local/apache2/bin/apachectl start
echo "httpd服务已启动"
}
# 主函数
main() {
local version=$1
# 检查是否提供了版本号
if [ -z "$version" ]; then
echo "请提供httpd的版本号作为位置参数"
exit 1
fi
# 初始化
initialize
# 下载和解压
download_and_extract "$version"
# 编译和安装
compile_and_install
# 链接包(如果需要的话)
link_packages
# 启动服务
start_service
}
# 调用主函数
main "$@"
总结开放系统互联OSI模型,每层作用及对应的协议。
开放系统互联(OSI)模型是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。OSI模型从低到高分为七层,每层都有其特定的作用以及与之对应的协议。以下是OSI模型的各层及其作用和常见协议:
物理层(Physical Layer):
作用:负责在物理传输媒介上传输数据比特流。
常见协议与标准:Ethernet、Wi-Fi、蓝牙等。
数据链路层(Data Link Layer):
作用:将物理层传输的比特流组织成帧(Frame),并在相邻节点之间传输数据。
常见协议与标准:以太网协议(Ethernet)、无线局域网协议(Wi-Fi)、透明传输协议(PPP)等。
网络层(Network Layer):
作用:负责数据在不同网络之间的传输和路由选择。
常见协议与标准:互联网协议(IP)、网际控制报文协议(ICMP)、网际组管理协议(IGMP)等。
传输层(Transport Layer):
作用:主要负责提供端到端的可靠数据传输和错误恢复机制。
注意:OSI七层模型原本包括会话层、表示层和应用层,但在某些资料中,传输层、会话层、表示层被统一为运输层。因此,对于会话层和表示层的协议与功能,在这里可能并不涵盖。
会话层:
作用:负责建立、管理和终止会话。
对应协议:在不同的网络环境和应用中会有所不同。
表示层:
作用:对数据进行加密、压缩和转换,以确保数据的安全性和一致性。
对应协议:因具体应用和数据类型的不同而有所不同。
应用层:
作用:为用户提供网络服务接口,如电子邮件、文件传输等。
常见协议:HTTP、FTP、SMTP、DNS等。
调整动态端口范围为20000-60000
要修改动态端口范围,可以使用sysctl命令的-w选项。执行以下命令将起始端口设置为20000,结束端口设置为60000:
sudo sysctl -w net.ipv4.ip_local_port_range=20000 60000
修改后的设置将立即生效,但仅在当前会话中有效。为了使设置在系统重启后仍然有效,需要将上述命令添加到/etc/sysctl.conf配置文件中。使用文本编辑器打开该文件:
sudo vim /etc/sysctl.conf
在文件的末尾添加以下行:
net.ipv4.ip_local_port_range=20000 60000
保存并关闭文件。
为了使新设置生效,可以执行以下命令:
sudo sysctl -p
这将应用/etc/sysctl.conf文件中的新设置。
总结TCP包头结构,TCP三次握手,4次挥手。
TCP包头结构主要包含了TCP协议头,其最小长度为20个字节。关键区域包括:
TCP源端口和目的端口:各占16位,分别用于标识发送端和接收端的端口号。源端口和源IP地址的作用是标示报文的返回地址。
序列号:用于标识TCP分段中第一个字节的序列号,确保数据的按序到达。
标志位:包含一系列控制标志,如ACK(确认标志)、SYN(同步标志)、FIN(结束标志)等,用于TCP连接的建立和断开,以及数据的确认和重传。
TCP三次握手用于建立TCP连接,过程如下:
客户端发送SYN包(包含初始序列号)到服务器,并进入SYN_SEND状态,等待服务器确认。
服务器收到SYN包后,确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态。
客户端收到服务器的SYN+ACK包后,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。此时,客户端与服务器之间的TCP连接建立成功,可以开始传输数据。
TCP四次挥手用于断开TCP连接,过程如下:
客户端向服务器发送一个FIN数据包,告诉服务器不再发送数据,并指定一个序列号。此时客户端进入FIN_WAIT1状态。
服务器收到FIN包后,发送ACK包进行确认,此时服务器进入CLOSE_WAIT状态。客户端收到确认后进入FIN_WAIT2状态,等待服务器断开连接。
当服务器完成数据传输后,也发送一个FIN包给客户端,进入LAST_ACK状态。
客户端收到服务器的FIN包后,发送ACK包进行确认,然后进入TIME_WAIT状态,等待一段时间后,进入CLOSED状态,连接完全关闭。同时,服务器收到客户端的ACK包后,也进入CLOSED状态。
总结主机到主机的包传递过程。
- 应用层封装:当主机需要发送数据时,首先会在应用层将应用数据封装成特定的格式,如HTTP请求或FTP文件数据等。这些数据包含了发送方想要传达给接收方的信息。
- 传输层封装:接下来,在传输层,数据被封装成TCP或UDP数据包。TCP提供可靠的、面向连接的传输服务,而UDP则提供无连接的、不可靠的传输服务。对于TCP数据包,还会涉及序列号、确认机制等以确保数据的顺序和完整性。
- 网络层封装:在网络层,数据包被封装成IP数据包。IP数据包包含了源主机和目的主机的IP地址,使得数据包能够在互联网中正确地路由和传输。
- 数据链路层封装:在数据链路层,IP数据包被进一步封装成帧(Frame)。这一层负责在物理网络上传输数据,包括添加帧头、帧尾以及可能的校验和等信息,以确保数据在物理传输过程中的完整性。
- 物理层传输:最后,封装好的帧通过物理层在物理介质(如网线、光纤或无线信号)上进行传输。物理层负责将比特流转换为可以在物理介质上传输的信号。
- 中间节点处理:在数据包从源主机到目的主机的路径中,可能会经过多个中间节点,如路由器和交换机。这些中间节点根据数据包的IP地址和路由表信息,决定数据包的下一跳路径,并将其转发到下一个节点。
- 目的主机处理:当数据包到达目的主机时,目的主机的网络层首先解封装IP数据包,然后传输层解封装TCP或UDP数据包,最后应用层解封装应用数据。这样,目的主机就可以获取到发送方发送的原始信息。
总结IP地址 A, B, C, D 类,并解析IP地址的组成
IP地址是由“网络号”和“主机号”两部分组成的。具体来说,IP地址采用了分层结构,通过子网掩码来区分网络位和主机位。子网掩码与IP地址一一对应,子网掩码为1的部分是网络位,为0的部分是主机位。
根据取值范围的不同,IP地址主要分为A、B、C、D、E五类,每一类都有其特定的用途和标识长度:
- A类地址:网络号占第一段号码,剩下的三段号码为主机号。网络地址的最高位必须是“0”。A类地址用于最大型的网络,网络节点数可达16777216个。A类地址的范围是1.0.0.0~126.255.255.255。
- B类地址:前两段号码为网络号,后两段号码为主机号。网络地址的最高位必须是“10”。B类地址一般用于中等规模网络,其范围是128.0.0.0~191.255.255.255。
- C类地址:前三段号码为网络号,最后一段号码为主机号。网络地址的最高位必须是“110”。C类地址用于小型网络,其范围是192.0.0.0~223.255.255.255。
- D类地址:用于多路广播用户,即多播地址。该类IP地址的最前面为“1110”,所以地址的网络号取值于224239之间,范围是224.0.0.0239.255.255.255。
201.222.200.111/18计算主机数?子网掩码?说明计算方法。
计算子网掩码
IP地址由32位组成,前18位是网络位,后14位是主机位。
子网掩码由32个二进制位组成,前18位是1(表示网络位),后14位是0(表示主机位)。
将这32位转换为点分十进制格式。
前18位为1,即:
11111111 11111110 00000000 00000000
转换为点分十进制:
255.254.0.0(子网掩码)
计算主机数
主机位有14位。
每个位可以有两种状态(0或1),因此总共有2^14种可能的组合。
但是,两种组合是保留的:一个是全0(表示网络地址),另一个是全1(表示广播地址)。
因此,可用的主机数是2^14 - 2。
计算可得:可用主机数是16382个。
当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
A的IP地址和子网掩码:
IP地址:10.0.1.1
子网掩码:/16 或 255.255.0.0
网络部分计算:
将IP地址与子网掩码进行逻辑与运算,得到网络地址。
10.0.1.1 与 255.255.0.0 = 10.0.0.0
因此,A的网络地址是10.0.0.0,并且它可以识别的主机范围是10.0.0.0到10.0.255.255。
B的IP地址和子网掩码:
IP地址:10.0.2.2
子网掩码:/24 或 255.255.255.0
网络部分计算:
将IP地址与子网掩码进行逻辑与运算,得到网络地址。
10.0.2.2 与 255.255.255.0 = 10.0.2.0
因此,B的网络地址是10.0.2.0,并且它可以识别的主机范围是10.0.2.0到10.0.2.255。
由于A的网络地址是10.0.0.0,而B的网络地址是10.0.2.0,它们是不同的。因此,A和B不在同一个网段。
解析/etc/sysconfig/network-scripts/ifcfg-eth0配置格式。
/etc/sysconfig/network-scripts/ifcfg-eth0 是 Red Hat 和基于 Red Hat 的 Linux 发行版(如 CentOS 和 Fedora)中用于配置网络接口 eth0 的文件。这个文件包含了网络接口的各种参数设置。
下面是一个典型的 ifcfg-eth0 文件内容,以及对其配置的解析:
DEVICE=eth0 #指定了网络接口的名字。在大多数情况下,它将是 eth0
BOOTPROTO=static # 定了网络接口使用的启动协议。static 表示使用静态 IP 地址,而 dhcp 表示使用 DHCP 来获取 IP 地址。
ONBOOT=yes#指定了是否在系统启动时激活这个网络接口。yes 表示在系统启动时激活它,而 no 则表示不激活。
IPADDR=192.168.1.100 # 指定了网络接口的静态 IP 地址。
NETMASK=255.255.255.0 #指定了网络掩码。它用于确定哪些 IP 地址在同一个子网上。
GATEWAY=192.168.1.1 # 指定了默认网关的 IP 地址。所有不在本地网络上的流量都将通过这个网关转发。
DNS1=8.8.8.8 # 定了用于域名解析的 DNS 服务器的 IP 地址。
DNS2=8.8.4.4
基于配置文件或命令完成bond0配置
创建bond0的配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-bond0
在配置文件中添加以下内容:
DEVICE=bond0
TYPE=Bond
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100 # 替换为你的IP地址
NETMASK=255.255.255.0 # 替换为你的子网掩码
GATEWAY=192.168.1.1 # 替换为你的网关地址
BONDING_MASTER=yes
BONDING_MIIMON=100 # 链路监测间隔,单位为毫秒
BONDING_MODE=active-backup # 绑定模式,这里使用active-backup模式
创建物理接口的配置文件,并将其绑定到bond0。假设你有两个物理接口eth0和eth1,你可以创建以下配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
内容如下:
DEVICE=eth0
MASTER=bond0
SLAVE=yes
ONBOOT=yes
USERCTL=no
对于eth1,创建类似的配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-eth1
内容如下:
DEVICE=eth1
MASTER=bond0
SLAVE=yes
ONBOOT=yes
USERCTL=no
重启网络服务以应用更改
完成上述步骤后,你的bond0接口应该已经配置好了,并且绑定了eth0和eth1两个物理接口。你可以使用ip addr命令来验证配置是否生效。
通过ifconfig命令结果找到ip地址.
打开终端,输入 ifconfig 命令并回车。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe9a:9b55 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:9a:9b:55 txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 1048576 (1.0 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 890 bytes 65432 (65.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 8 bytes 656 (656.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8 bytes 656 (656.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
在上面的例子中,eth0 是一个以太网接口,inet 后面的 192.168.1.100 就是该接口的 IPv4 地址。而 lo 是回环接口,通常用于本机测试,其 IPv4 地址是 127.0.0.1。
使用脚本判断 你主机所在网络内在线的主机IP有哪些? ping通则在线。
示例:它使用ping命令来扫描一个指定的IP地址范围,并输出在线的主机IP:
#!/bin/bash
# 设置网络前缀和扫描范围
NET_PREFIX="192.168.1" # 替换为你的网络前缀
START_IP=1
END_IP=254 # 替换为你的扫描范围,例如从1到254
# 使用ping命令扫描网络内的主机
for ip in $(seq $START_IP $END_IP); do
# 构造完整的IP地址
FULL_IP="${NET_PREFIX}.${ip}"
# 使用ping命令检查主机是否在线
# 使用-c 1参数限制ping命令只发送一个包
# 使用-W 1参数设置超时时间为1秒
ping -c 1 -W 1 $FULL_IP &> /dev/null
# 检查ping命令的退出状态
if [ $? -eq 0 ]; then
echo "$FULL_IP is online"
fi
done