openEuler实验-使用Shell脚本实现局域网MAC地址收集和FTP服务监控

news2024/9/28 23:37:14

linux的简单运用

目录

前言

1. 实验目的

2. 实验内容

3. 实验知识点

4. 实验时长

5. 实验环境

实验分析

部署FTP服务器

1)安装FTP服务

2)查看FTP服务

3)启动FTP服务

4)关闭FTP服务

收集MAC地址

1)修改主机名

2)探测单台主机MAC信息

3)筛选探测结果

4)创建并编写脚本文件

5)执行脚本文件

6)查看搜集结果

检测FTP服务

1)创建并编辑脚本文件

2) 安装nmap命令工具

3) 监控单台主机

4)监控局域网主机

5)运行脚本文件

6)查看监控结果

总结


前言

在本文中,我将介绍如何使用Shell脚本在openEuler系统上实现一个简单的网络管理工具,它可以收集局域网内所有设备的MAC地址,并监控FTP服务的运行状态。这个工具可以帮助网络管理员了解网络拓扑结构,发现异常设备,以及检测FTP服务是否正常工作。

为什么要使用Shell脚本呢?Shell脚本是一种轻量级的编程语言,它可以直接在终端中执行,不需要编译或安装其他软件。Shell脚本可以方便地调用系统命令和工具,实现各种功能。Shell脚本也可以跨平台运行,只要有一个兼容的Shell解释器就可以了。openEuler系统默认提供了bash和zsh两种常用的Shell解释器,我们可以根据自己的喜好选择其中一种来编写脚本。

1. 实验目的

• 掌握FTP服务器的安装

• 掌握FTP服务器的配置与管理

• 掌握shell脚本基本语句的编写

• 掌握if语句的应用

• 掌握for语句的应用

• 掌握重定向输出的应用

• 掌握脚本语句的执行方式

2. 实验内容

使用Shell脚本对局域网中的所有主机进行MAC地址的收集,便于日常的维护管理。同时对局域网中部署FTP服务的主机进行监控,能够快速得知哪台具有FTP的主机在提供服务。下图该局域网的拓扑图。

图1局域网拓扑

实现MAC地址收集和FTP服务监控具体操作内容如下:

1)部署FTP服务器

使用dnf命令安装FTP服务,配置基本的ftp参数,对FTP服务进行启动、重启、关闭操作。

2)收集MAC地址

创建Shell脚本文件,编写如下过程:首先创建MAC地址的存储文件,然后使用arping命令,根据IP地址探测局域网中的主机获取对应的信息记录,应用grep命令、sed命令、awk命令对信息记录进行筛选,最后将筛选后的信息通过重定向命令输出到指定的文件中。

3)检测FTP服务

创建Shell脚本文件,编写如下过程:首先创建端口存储文件,然后使用nmap命令根据IP地址检测21号端口的状态,最后根据状态信息通过重定向名输出到指定的文件中。

3. 实验知识点

• 使用dnf命令安装FTP服务

• 使用systemctl命令管理FTP服务

• 使用touch命令创建文件

• 使用chmod命令修改文件权限

• 使用if语句进行条件判断

• 使用for语句进行循环遍历

• 使用重定向命令将数据输出到文件

• 应用sh命令执行脚本文件

4. 实验时长

共2学时:

• 部署FTP服务器和收集MAC地址(1学时)

• 检测FTP服务(1学时)

5. 实验环境

• 两台或多台互联的Linux主机(双核cpu、4G内存、40G硬盘、openEuler 20.3LTS操作系统)

实验分析

1)部署FTP服务器

• 使用dnf命令安装FTP

• 使用vim命令对FTP配置文件进行设置

• 使用systemctl start命令启动FTP服务

• 使用systemctl stop命令关闭FTP服务

• 使用systemctl status命令查看FTP服务运行状态

2)收集MAC地址

• 使用vim、hostname、su命令修改监控机主机名

• 使用arping命令探测主机MAC

• 使用grep、sed、awk命令筛选探测结果

• 使用vim命令创建并编写脚本文件

• 使用touch命令创建收集MAC文件

• 使用重定向命令输出筛选信息到收集MAC的文件

• 使用cat命令查看收集MAC文件的内容

3)检测FTP服务

• 使用vim命令创建并编写脚本文件

• 使用touch命令创建存储检测结果文件

• 使用dnf命令安装nmap软件包

• 使用nmap命令对IP的端口扫描

• 编写对局域网全部主机检测脚本

• 执行检测脚本

• 使用cat命令查看检测结果文件

部署FTP服务器

1)安装FTP服务

FTP服务器需要部署在非监控的主机上,使用dnf命令进行FTP的安装。在Linux中提供FTP服务的是vsftpd软件,命令实现如下:

【代码1-1】安装FTP服务

dnf install vsftpd    #dnf是新一代的软件包管理命令 其用法等同于yum命令

回车后如下图:

图2安装FTP服务

2)查看FTP服务

使用systemctl status命令查看FTP服务是否启动,具体的命令如下:

【代码1-2】查询FTP服务状态

systemctl status vsftpd #systemctl status为查询某个服务的状态 此处查询vsftpd服务状态

上述代码执行效果如下图:

图3查看FTP服务状态

由上述结果“Active: inactive (dead)”显示,当前的FTP服务处于停止状态。

3)启动FTP服务

使用systemctl start命令启动FTP服务,并应用systemctl status命令查看当前状态,命令实现如下:

【代码1-3】启动FTP服务并查看状态

systemctl start vsftpd  #systemctl start命令为启动指定服务
systemctl status vsftpd

上述代码执行效果如下图:

图4 启动FTP服务并查看状态

命令执行完毕,从上述结果“Active: active (running)”得知,ftp服务启动成功。

4)关闭FTP服务

使用systemctl stop命令关闭FTP服务,并使用systemctl status命令查看FTP服务状态,命令实现如下:

【代码1-4】关闭FTP服务,并查看状态

systemctl stop  vsftpd #systemctl stop为停止指定服务
systemctl status vsftpd

上述代码执行效果如下图:

图5 关闭FTP服务,并查看状态

命令执行完毕,从上述结果“Active: inactive (dead)”得知,FTP服务关闭成功,关闭后再次执行启动FTP服务命令保持服务在打开状态。

收集MAC地址

使用脚本收集MAC地址,首先在脚本文件中创建MAC地址的存储文件,然后使用arping命令在局域网中根据IP地址进行探测,接着应用筛选工具对探测的结果进行处理,最后将处理后的结果使用重定向命令输出到MAC地址的存储文件中。

1)修改主机名

为了在实验过程中区别于被测试机器,对监控主机的主机名进行修改,为了能够永久性修改主机名和当前显示为修改后的主机名,要对主机名存放文件“/etc/hostname”进行修改,同时使用hostname命令修改当前显示的主机名。

现使用vim命令修改主机名文件内容为“monitor”,命令实现如下:

【代码2-1】修改/etc/hostname文件

vim /etc/hostname    #通过vim命令可查询当前主机的hostname文件

进入到编辑页面后,按i进入编辑模式,将主机名修改为“monitor”,上述代码执行效果如下图所示:

图6修改/etc/hostname文件

输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。

使用hostname命令修改当前的主机名为“monitor”,并使用su 命令使新主机名生效,命令实现如下:

【代码2-2】修改当前主机名,并使其生效

hostname monitor       #hostname命令可以查看当前的主机名
su -					#su切换用户 切换用户后可以使新主机名生效

上述代码执行效果如下图所示:

图7修改当前主机名,并使其生效

命令执行完毕后,通过返回信息发现系统已经使用新的主机名。

2)探测单台主机MAC信息

为保证后面批量探测的可靠性,先对单台主机进行探测实验。使用arping命令结合参数-c、--w、-I,三个参数的介绍如下:

• -c:发送包的数量;

• -w:最长等待时间,单位为秒;

• -I:指定arping测试的网卡设备。

使用ifconfig命令查看本机IP,IP地址中的第三位代表网段,当第三位为1时,可以对192.168.1.1主机进行测试,命令语句为arping -c 2 -w 1 -I eth0 192.168.1.1;如果第三位为2时,可以对192.168.2.1主机进行测试,命令语句为arping -c 2 -w 1 -I eth0 192.168.2.1

针对局域网中的其他主机进行测试,例如IP为172.16.40.208,命令为:arping -c 2 -w 1 -I eth0 172.16.40.208 。(以下arping主机探测命令根据实际环境的IP,改用192.168.*.1即可,其中*代表当前主机IP的第三位数字。

【代码2-3】以172.16.40.208主机探测的为例

arping -c 2 -w 1 -I eth0 172.16.40.208 #arping可以探测mac地址 但是只能探测同一子网下的  -c:发送包的数量  -w:最长等待时间,单位为秒  -I:指定arping测试的网卡设备。

上述代码执行效果如下图所示:

图8探测172.16.40.208的主机

arping -c 2 -w 1 -I eth0 172.16.40.208命令语句中,eth0为网络接口的名称。该命令执行后,返回的探测结果显示发送2个探测包,收到2个应答包,表明命令成功执行。结果中IP地址后的中括号内的字符串即为MAC地址。

但如果探测没有成功,执行结果如何呢?现在对实验室另一台服务器进行测试,以IP为172.16.40.210 为例(需要替换为实际IP)命令实现如下:

【代码2-4】探测172.16.40.210的主机

arping -c 2 -w 1 -I eth0 172.16.40.210  #探测 172.16.40.210 可填写另一台主机或者其他同学实验主机的IP地址

上述代码执行效果如下图所示:

图9探测172.16.40.210的主机

如果显示,发送两个探测包,接受0个探测包,则表示探测失败,其原因为两台服务器可能不在同一网段,可以使用其他同学的相同网段服务器进行测试(使用ifconfig命令查看本机IP,IP地址中的第三位代表网段,网段地址第三位相同则表示网段)。

3)筛选探测结果

虽然通过arping命令能够将目标主机的MAC信息获取过来,但是这些信息并不是最终需要的结果,最终的结果应是单纯的IP地址和MAC地址的对应。所以,需要对探测的结果信息进行筛选处理。

现在逐步对探测结果进行处理,首先使用grep命令结合“^”正则表达式,该“^”表示匹配其后的字符串。过滤掉首尾无用信息,只选取具有“Unicast”字符串的行,操作的对象依旧是IP为172.16.40.208的主机,命令实现如下(实际环境中把相应的IP地址进行替换即可):

【代码2-5】过滤掉首尾无用信息

arping -c 2 -w 1 -I eth0 172.16.40.208 | grep "^Unicast"  #过滤处带有Unicast字样的项

上述代码执行效果如下图所示:

图10过滤掉首尾无用信息

命令执行完毕,相对于上次结果,已经过滤掉了首尾的信息,只保留了具有IP和MAC地址的信息行。

现在在现有的结果的基础上做进一步的筛选,使用sed命令结合正则表达式删除结果行中的“[”,命令实现如下(实际环境中把相应的IP地址进行替换即可):

【代码2-6】删除结果行中“[”

arping -c 2 -w 1 -I eth0 172.16.40.208 | grep "^Unicast" | sed -n "s/\[//p"   #在上一条命令的基础上使用正则表达式删除[符号

上述代码执行效果如下图所示:

图11 删除结果行中“[”

命令语句sed -n "s/\[//p"中,用-n参数只显示匹配的行,后面的表达式表示用空字符代替“[”,并输出。

再使用sed命令删除结果行中的“]”,命令实现如下(实际环境中把相应的IP地址进行替换即可):

【代码2-7】删除结果行中“]”

arping -c 2 -w 1 -I eth0 172.16.40.208 | grep "^Unicast" | sed -n "s/\[//p" | sed -n "s/\]//p"  #在上一条命令的基础上使用正则表达式删除]符号

上述代码执行效果如下图所示:

图12 删除结果行中“]”

命令语句sed -n "s/\]//p"中,用-n参数只显示匹配的行,后面的表达式表示用空字符代替“]”,并输出。

结果显示,所有的行都去掉了“[”和“]”。

最后使用awk命令,筛选出只有IP和MAC地址的结果行,命令实现如下(实际环境中把相应的IP地址进行替换即可):

【代码2-8】筛选出只有IP和MAC地址结果行

arping -c 2 -w 1 -I eth0 172.16.40.208 | grep "^Unicast" | sed -n "s/\[//p" | sed -n "s/\]//p" | awk '{print $4,$5}'  #在上一条命令的基础上以空格为分界线过滤出第四项和第五项

上述代码执行效果如下图所示:

图13 筛选出只有IP和MAC地址结果行

命令语句awk '{print $4,$5 }'中$4和$5分别表示结果行的第四列和第五列。结果显示,结果行中只有IP和MAC地址。

4)创建并编写脚本文件

现在使用vim命令创建名为getmac.sh的脚本文件,编写脚本内容为:在/usr目录下创建搜集MAC结果的存储文件mac。如果该目录下已有该名称的文件,则先将该文件进行备份为mac.bak,然后再创建mac文件,那么就要用到if条件判断语句判断该mac文件是否存在。命令实现如下:

【代码2-9】创建并编辑getmac.sh脚本文件

vim getmac.sh #使用vim命令编辑getmac.sh命令 如果没有此文件则会先创建文件 然后编辑此文件

打开getmac.sh脚本后,点击i进入编辑模式,ctrl+insert为复制内容,shift+insert为粘贴内容,esc键为退出编辑状态,在退出编辑状态中输入“:wq”并回车则保存并退出vim编辑器。

【代码2-10】getmac.sh脚本内容

#!/bin/bash                 #使用bin/bash解释器
if [ ! -f /usr/mac ]        #判断是否有/usr/mac 如果没有则创建 有则先备份再创建
    then
        touch /usr/mac
else
    mv /usr/mac /usr/mac.bak
    touch /usr/mac
fi

上述代码执行效果如下图所示:

图14 创建并编辑getmac.sh脚本文件

输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。

接下来需要对局域网中所有的主机进行探测,将探测的结果筛选后重定向输出到mac文件中。对每台探测的主机重复进行前面所做的一系列的筛选操作,就需要用到循环语句。

在本实验中,该局域网中共有254台主机(依据自己实验环境而定),那么对于确定的数目,可以使用for循环语句进行操作,扫描的范围越大所需要的时间越长,此处便于演示,将扫描范围改为1~5,仅演示效果。使用vim命令再次对getmac.sh脚本文件进行编辑,命令实现如下.

在实验环境中,将自己主机的IP地址的前三位替换172.16.40,例如当前主机IP为192.168.2.40,则用192.168.2替换掉172.16.40)

【代码2-11】使用vim打开getmac.sh文件

vim getmac.sh

打开后在文件中编辑以下内容并保存。

【代码2-12】向getmac.sh脚本文件添加全局域网探测脚本

#!/bin/bash
if [ ! -f /usr/mac ]
    then
        touch /usr/mac
else
    mv /usr/mac /usr/mac.bak
    touch /usr/mac
fi
for ((j=1;j<=5;j++))   #通过循环获取172.16.40.1~172.16.40.5地址中的Mac地址
do    arping -c 2 -w 1 -I eth0 172.16.40.$j |grep "^Unicast"|sed -n "s/\[//p" |sed -n  "s/\]//p" | awk '{print $4,$5}' | uniq  >> /usr/mac
done

上述代码执行效果如下图所示:

图15 向getmac.sh脚本文件添加全局域网探测脚本

输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。

上述代码中,语句“uniq >> /usr/mac”表示重复的结果只保留一条,然后重定向输出到mac文件中。

5)执行脚本文件

脚本文件的执行可以在脚本文件的所在的目录使用“./”后跟文件名的形式,也可以使用sh命令来执行,但首先需要对脚本文件添加可执行权限,命令实现如下:

【代码2-13】为getmac.sh脚本添加执行权限,并查看其权限

chmod a+x getmac.sh #为脚本添加执行权限
ll

上述代码执行效果如下图所示:

图16 为getmac.sh脚本添加执行权限,并查看其权限

现在使用sh命令执行脚本文件,命令实现如下:

【代码2-14】执行脚本文件getmac.sh

sh getmac.sh   #执行脚本

上述代码执行效果如下图所示:

图17 执行脚本文件getmac.sh

6)查看搜集结果

脚本文件执行完毕,使用cat命令查看mac文件中的结果,命令实现如下:

【代码2-15】查看文件mac

cat /usr/mac   #查看获取到的数据

上述代码执行效果如下图所示:

图18 查看文件mac

结果显示已经把整个局域网中在线的主机的MAC地址搜集到mac文件中了,包括IP地址为172.16.40.208的主机。

检测FTP服务

在局域网中,被监控FTP服务的有效主机,首先是处于在线状态的,对于寻找这些主机可以通过上面搜集MAC地址的实验中获取,因为arping探测的主机,有应答响应的才能获取结果,也同时表明,该应答响应的主机是处于在线的。然后,再通过namp命令对每个IP的端口进行探测筛选,将具有FTP服务的主机(开启了21号端口)的IP信息利用重定向命令输出到监控文件中。

首先创建并编写脚本文件,创建存储监控文件,同样也是要使用if语句判断创建的文件是否存在。

1)创建并编辑脚本文件

使用vim创建脚本文件getmonitor.sh,并编写脚本实现创建存储监控结果的文件monitor,该文件存储在/usr目录下,命令实现如下:

【代码3-1】使用vim创建并打开getmonitor.sh

vim getmonitor.sh

向打开的getmonitor.sh文件中添加以下内容,按“esc”并输入“:wq”,按回车保存并退出。

【代码3-2】编写创建监控结果存储文件monitor脚本

#!/bin/bash
if [ ! -f /usr/monitor ]
    then
        touch /usr/monitor
else
    mv /usr/monitor /usr/monitor.bak
    touch /usr/monitor
fi

上述代码执行效果如下图所示:

图19 创建脚本文件getmonitor.sh,并编写创建监控结果存储文件monitor脚本

输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。

2) 安装nmap命令工具

使用dnf命令安装nmap命令工具,操作命令如下:

【代码3-3】安装nmap软件包

dnf install nmap  #使用dnf命令安装nmap

上述代码执行效果如下图所示:

图20 安装nmap软件包

3) 监控单台主机

使用nmap命令对单台主机进行FTP检测,使用-sT参数与目标所有端口进行三次握手,尝试建立连接,如果某个端口连接成功,则表示端口开启。

使用ifconfig命令查看本机IP,IP地址中的第三位代表网段,当第三位为1时,可以对192.168.1.1主机进行测试,命令语句为nmap -sT 192.168.1.1;如果第三位为2时,可以对192.168.2.1主机进行测试,命令语句为nmap -sT 192.168.2.1

针对局域网中的其他主机进行测试,例如IP为172.16.40.208,命令为:nmap -sT 172.16.40.208 。(以下arping主机探测命令根据实际环境的IP,改用192.168.1.1或192.168.2.1即可。

【代码3-4】检测IP地址为172.16.40.208的主机

nmap -sT 172.16.40.208 #nmap命令可以检测指定IP的ftp服务

上述代码执行效果如下图所示:

图21 检测IP地址为172.16.40.208的主机

在结果中的PORT STATE SERVICE对应的项中,没有21号端口的信息,表示21号端口没有开启。在实验环境中,在跟监控机的IP同一网络的主机上,即IP地址的第三位一样的主机上安装FTP服务,以便实现测试(如另一台机器网段不同,则可以使用其他同学同一网段服务器进行测试)。

现在将IP地址为172.16.40.208的主机上的FTP服务开启并查看状态,命令实现如下。

【代码3-5】开启ftp服务并查看状态

systemctl start vsftpd 
systemctl status vsftpd

上述代码执行效果如下图所示:

图22开启FTP服务并查看状态

现在使用nmap命令再次进行检测,命令实现如下(实际环境中把相应的IP地址进行替换即可):

【代码3-6】再次检测IP地址为172.16.40.208的主机

nmap -sT 172.16.40.208 

上述代码执行效果如下图所示:

图23再次检测IP地址为172.16.40.208的主机

由结果“21/tcp open ftp”得知,21号端口开启,FTP服务运行中。

4)监控局域网主机

对局域网内所有主机进行监控,需要使用循环结构对每台主机进行检测。现在脚本文件中编写脚本实现全局域网检测,并使用重定向命令输出到monitor文件中,命令实现如下:

【代码3-7】使用vim打开getmonitor.sh

vim getmonitor.sh

向打开的getmonitor.sh文件中添加以下内容,按“esc”并输入“:wq”,按回车保存并退出。

【代码3-8】局域网全部主机检测脚本编写


#!/bin/bash
if [ ! -f /usr/monitor ]
    then
        touch /usr/monitor
else
    mv /usr/monitor /usr/monitor.bak
    touch /usr/monitor
fi
ipconnections=`awk '{print $1}' /usr/mac`  
for i in $ipconnections    #通过循环检测指定IP是否开启ftp服务
do

    echo "$i" >> /usr/monitor | nmap -sT $i | grep "21" >> /usr/monitor
done

上述代码执行效果如下图所示:

图23再次检测IP地址为172.16.40.208的主机

输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。

5)运行脚本文件

使用chmod命令修改脚本文件getmonitor.sh具有执行的权限,并查看操作结果,命令执行如下:

【代码3-9】增加getmonitor.sh文件的执行权限,并查看

chmod a+x getmonitor.sh 
ll 

上述代码执行效果如下图所示:

图24增加getmonitor.sh文件的执行权限,并查看

使用sh命令运行脚本文件getmonitor.sh,命令实现如下:

【代码3-10】执行脚本getmonitor.sh

sh getmonitor.sh 

上述代码执行效果如下图所示:

图25执行脚本getmonitor.sh

没有任何错误提示,表明脚本成功执行。

6)查看监控结果

使用cat命令查看monitor文件,以获知监控结果,命令实现如下:

【代码3-11】查看monitor文件

cat /usr/monitor 

上述代码执行效果如下图所示:

图26查看monitor文件

结果显示,局域网内只有172.16.40.208的主机开启了FTP服务,实验结束。


总结

这篇文章介绍了如何使用 Shell 脚本实现局域网 MAC 地址收集和 FTP 服务监控。作者首先介绍了 Shell 脚本的基本语法和常用命令,然后详细讲解了如何使用 Shell 脚本实现局域网 MAC 地址收集和 FTP 服务监控。在局域网 MAC 地址收集方面,使用了 arp 命令和 awk 命令,通过 Shell 脚本实现了对局域网中所有主机的 MAC 地址的收集和存储。在 FTP 服务监控方面,使用了 nc 命令和 while 循环,通过 Shell 脚本实现了对 FTP 服务的监控和报警。最后,总结了 Shell 脚本实现局域网 MAC 地址收集和 FTP 服务监控的方法和步骤,并给出了完整的 Shell 脚本代码。

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

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

相关文章

C++17字符流以及C++11文件流以及IO流

getline() 有时候我们希望在最终的字符串中保留输入时的空白符&#xff0c;这时候应该用getline函数来替代原来的>>运算符。&#xff08; cin 不能输入包含嵌入空格的字符串&#xff09;。 getline()函数的参数是一个输入流和一个string对象&#xff0c;原型是&#xf…

threejs的使用

threejs介绍&#xff1a; Three.js是一款基于WebGL的JavaScript 3D库&#xff0c;用于创建和渲染3D图形场景。它提供了一个简单易用的接口&#xff0c;让开发者可以通过JavaScript代码创建出高度交互性和可视化的3D场景。Three.js提供了很多可用的3D对象和材质&#xff0c;例如…

C++ -2- 类和对象(上)| 什么是类

​ 文章目录 1.面向过程与面向对象2.类的引入3.类的定义两种定义方式 4.类的访问限定符5.类的作用域6.类的示例化7.类的对象大小计算8.类成员函数的this指针C语言和C的对比(this指针)空指针的问题 C语言和C实现Stack对比 1.面向过程与面向对象 C&#xff1a;面向过程&#xf…

java获取请求ip的方法

在上篇文章中我们介绍了 java获取请求 ip的方法&#xff0c;那么这篇文章我们就来详细讲解下获取请求 ip的方法。获取请求 ip的方法是基于 HTTP协议的&#xff0c;其原理如下&#xff1a; 1、用 web应用程序&#xff0c;将 web服务器端与客户端通过 HTTP协议通信。 2、客户端发…

LNMP架构和论坛搭建以及一键部署

数据流向 一、Nginx服务安装 1、关闭防火墙 [rootking ~]# systemctl stop firewalld [rootking ~]# systemctl disable firewalld [rootking ~]# setenforce 0 2、将所需软件包拖入/opt目录下 3、安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c make 4、创建运…

Feign快速入门

文章目录 一、Feign1.1 Feign介绍1.2 Feign的使用步骤1.3 Feign的自定义配置1.3.1 配置方法 1.4 Feign的优化 一、Feign 1.1 Feign介绍 Feign是一个Java HTTP客户端&#xff0c;它使开发人员可以轻松地与RESTful API进行交互。Feign使用注释来描述REST API&#xff0c;它还支持…

Springboot整合Junit5

1 SpringBoot整合Junit &#xff08;一&#xff09;junit5 介绍 Spring Boot 2.2.0 版本开始引入 JUnit 5 作为单元测试默认库 作为最新版本的JUnit框架&#xff0c;JUnit5与之前版本的Junit框架有很大的不同。由三个不同子项目的几个不同模块组成。 JUnit 5 JUnit Platfo…

音视频开发十九:SDL线程和事件

SDL事件相关API DL_Event 是SDL库中使用的一个数据结构&#xff0c;用于表示系统中发生的事件。一个事件可以是键盘按键、鼠标移动、游戏手柄移动、窗口事件等。SDL_Event 结构包含有关事件类型、事件发生时间和事件参数的详细信息。 SDL_Event 结构具有以下成员&#xff1a;…

[5 种有效方法] 适用于 Android 的通用解锁图案/密码

在当今世界&#xff0c;保护您的密码对于您的文件和数据的安全至关重要&#xff0c;尤其是在第三方应用程序盛行的情况下。为这些应用程序注册帐户不是问题&#xff0c;就像记住它们一样。但是&#xff0c;如果您不知何故忘记了手机密码&#xff0c;您仍然可以在不丢失宝贵数据…

突破规模化运维瓶颈 SREWorks云原生数智运维平台揭秘

作者&#xff1a; 钟炯恩——阿里云大数据基础工程技术团队运维专家 引言 突破规模化运维瓶颈是诸多IT规模增长的企业及组织当前遇到的比较棘手的问题。面对这些问题&#xff0c;多数人的第一反应是上云。但是上云之后我们会发现&#xff0c;即使云上的架构规模增大&#xf…

如何使用DNS实现融合CDN功能

将托管DNS解决方案与CDN配对可为您的网站提供额外的性能、可靠性和灵活性。 域名系统&#xff08;DNS&#xff09;是一种用于计算机、服务或连接到Internet或专用网络的任何资源的分层分布式命名系统&#xff0c;它将各种信息与分配给每个参与实体的域名相关联&#xff0c;它基…

ChatGPT 火了,一大批开源平替也来了

ChatGPT 凭一己之力让全球为 AI 沸腾&#xff0c;引发了科技巨头之间的聊天机器人军备竞赛。 众所周知&#xff0c;ChatGPT 的背后技术是 GPT(Generative Pre-trained Transformer)模型。GPT 是一种基于 Transformer 模型的自然语言处理模型&#xff0c;由 OpenAI 公司开发。它…

【elasticsearch部署】

安装elasticsearch 1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行 2.部署kibana2.1.部署2.2.DevTools 3.安装IK分词器3.1.在线安装ik插件&#xff08;较慢&#xff09;3.2.离线安装ik插件&#xff08;推荐&#xff09;1&#xff09;查看数据卷目录2&#xff09;解压缩分词器安…

前端必备的nginx知识点

nginx学习&#xff0c;看这一篇就够了&#xff1a;下载、安装。使用&#xff1a;正向代理、反向代理、负载均衡。常用命令和配置文件,很全_java冯坚持的博客-CSDN博客 前端必备的nginx知识点 - 掘金 前言&#xff1a; 最近在做一个后台项目 ngixn简介 nginx是一款轻量级&…

【Sql】sql语句练习随记

本文通过最经典的“学生-成绩-课程-教师”表来帮助练习sql语句。 STUDENT表 SNO 学号SNAME 姓名SSEX 性别SBIRTHDAY 生日CLASS 班级 SCORE表 SNO 学号CNO 课程编号DEGREE 分数 COURSE表 CNO 课程编号CNAME 课程名称TNO 教师编号 TEACHER表 TNO 教师编号TNAME 教师姓名TS…

(包教包会)最强分布式锁工具:Redisson

今天来聊聊分布式锁的最强实现&#xff1a;Redisson 从分布式锁到Redisson实现非常详细&#xff0c;适合慢慢咀嚼~ 一. Redisson概述 1.1 什么是Redisson&#xff1f; Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。…

CRMEB开源商城/标准版后台默认admin路径修改、后台目录地址修改

默认admin路径修改 v4.7 版本开始兼容可以修改admin路径&#xff0c;可以根据自己的要求更换后台访问地址&#xff1b; 默认路径不能携带特殊字符、全部都为小写字母 修改后台admin默认路径 标准版本文件位置根目录/config/app.php 开源版本文件位置根目录/crmeb/config/app.p…

新增套餐/redis/QuartZ

套餐其实就是检查组的集合&#xff0c;例如有一个套餐为“入职体检套餐”&#xff0c;这个体检套餐可以包括多个检查组&#xff1a;一般检查、血常规、尿常规、肝功三项等。所以在添加套餐时需要选择这个套餐包括的检查组。 套餐对应的实体类为Setmeal&#xff0c;对应的数据表…

深度学习(7)之图像抠图 Image Matting算法调研

目录 1.Trimap和Strokes 2. 相关数据集 3.论文算法调研 3.1 Deep Image Matting 3.2 Semantic Image Matting 3.3 Background Matting 3.4 Background Matting V2 3.5 Semantic Human Matting 3.6 HAttMatting 3.7 MMNet&#xff1a;Towards Real-Time Automatic Portrait Matt…

Nginx虚拟主机、优化和防盗链

一、Nginx虚拟主机 1、基于域名的nginx虚拟主机的操作步骤 1.1 为虚拟主机提供域名和IP的映射(也可以使用DNS正向解析) echo "192.168.2.66 www.xkq.com www.wy.com" >> /etc/hosts1.2 为虚拟主机准备网页文档 mkdir -p /var/www/html/ly/ mkdir -p /var/w…