栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

浅学----Linux指令(二)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅学----Linux指令(二)

文章目录
  • 目的:
  • 内容:
  • 相关知识点:
  • 实验分析:
  • 实验过程:
    • 部署FTP服务
      • 1)安装FTP服务
      • 2)查看FTP服务
      • 3)启动FTP服务
      • 4)关闭FTP服务
    • 收集MAC地址
      • 1)修改主机名
      • 2)探测单台主机MAC信息
      • 3)筛选探测结果
      • 3)创建并编写脚本文件
      • 4)执行脚本文件
      • 5)查看搜集结果
    • 检测FTP服务
      • 1)创建并编辑脚本文件
      • 2)安装nmap命令工具
      • 3)监控单台主机
      • 4)监控局域网主机
      • 5)运行脚本文件
      • 6)查看监控结果

目的:

​ 掌握FTP服务器的按照

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

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

​ 掌握if语句的应用

​ 掌握for语句的应用

​ 掌握重定向输出的应用

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

内容:

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

​ 图 局域网拓扑

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

​ 1)部署FTP服务器
​ 使用dnf命令安装FTP服务,配置基本的ftp参数,对FTP服务进行启动、重启、关闭操作。
​ 2)收集MAC地址
​ 创建Shell脚本文件,编写如下过程:首先创建MAC地址的存储文件,然后使用arping命令,根据IP地址探测局域网中的主机获取对应的信息记录,应用grep命令、sed命令、awk命令对信息记录进行筛选,最后将筛选后的信息通过重定向命令输出到指定的文件中。
​ 3)检测FTP服务
​ 创建Shell脚本文件,编写如下过程:首先创建端口存储文件,然后使用nmap命令根据IP地址检测21号端口的状态,最后根据状态信息通过重定向名输出到指定的文件中。

相关知识点:

· 使用dnf命令安装FTP服务
· 使用systemctl命令管理FTP服务·使用touch命令创建文件
· 使用chmod命令修改文件权限·使用if语句进行条件判断
· 使用for语句进行循环遍历
· 使用重定向命令将数据输出到文件。应用sh命令执行脚本文件

实验分析:

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软件,命令实现如下:

安装FTP服务指令

dnf install vsftpd

2)查看FTP服务

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

查询FTP服务状态

systemctl status vsftpd

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

3)启动FTP服务

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

启动FTP服务并查看状态

systemctl start vsftpd
systemctl status vsftpd

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

4)关闭FTP服务

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

关闭FTP服务,并查看状态

systemctl stop vsftpd
systemctl status vsftpd

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

收集MAC地址

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

1)修改主机名

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

修改/etc/hostname文件

vim /etc/hostname

​ 输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。
​ 使用hostname命令修改当前的主机名为“monitor",并使用su命令使新主机名生效,命令实现如下:

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

hostname monitor
su -

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

2)探测单台主机MAC信息

​ 为保证后面批量探测的可靠性,先对单台主机进行探测实验。使用arping命令结合参数-c、–w、-l,三个参数的介绍如下:
​ · -c:发送包的数量;
​ · -w:最长等待时间,单位为秒;

​ · -l:指定arping测试的网卡设备。
​ 使用ifconfig命令查看本机IP,IP地址中的第三位代表网段,当第三位为1时,可以对192.168.1.1主机进行测试,命令语句为arping -c 2 -w 1-l eth0 192.168.1.1;如果第三位为2时,可以对192.168.2.1主机进行测试,命令语句为arping -c 2 -w 1 -l eth0 192.168.2.1。
​ 针对局域网中的其他主机进行测试,例如IP为172.16.40.208,命令为:arping -c 2 -w 1 -l ech0 172.16.40.208(以下arping主机探测命令根据实际环境的IP,改用192.168.1.1 或 192.168.2.1即可)

使用ifconfig查看本地IP

arping -c 2 -w 1 -I eth0 172.16.40.210

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

我的IP为3段,所以使用192.168.3.235

arping -c 2 -w 1 -I eth0 192.168.3.235

3)筛选探测结果

​ 虽然通过arping命令能够将目标主机的MAC信息获取过来,但是这些信息并不是最终需要的结果,最终的结果应是单纯的IP地址和MAC地址的对应。所以,需要对探测的结果信息进行筛选处理。
​ 现在逐步对探测结果进行处理,首先使用grep命令结合“”正则表达式,该“”表示匹配其后的字符串。过滤掉首尾无用信息,只选取具有“Unicast”字符串的行,操作的对象依旧是IP为172.16.40.208的主机,命令实现如下(实际环境中把相应的IP地址进行替换即可)∶

过滤掉首尾无用信息

arping -c 2 -w 1 -I eth0 192.168.3.235 | grep "^Unicast"

​ 命令执行完毕,相对于上次结果,已经过滤掉了首尾的信息,只保留了具有IP和MAC地址的信息行。
​ 现在在现有的结果的基础上做进一步的筛选,使用sed命令结合正则表达式删除结果行中的“[”,命令实现如下(实际环境中把相应的IP地址进行替换即可):

删除结果行中 “[”

arping -c 2 -w 1 -I eth0 192.168.3.235 | grep "^Unicast" | sed -n "s/[//p"

​ 命令语句sed -n "sN[//p"中,用-n参数只显示匹配的行,后面的表达式表示用空字符代替“[”,并输出。
​ 再使用sed命令删除结果行中的“]”,命令实现如下(实际环境中把相应的IP地址进行替换即可):

arping -c 2 -w 1 -I eth0 192.168.3.235 | grep "^Unicast" | sed -n "s/[//p" | sed -n "s/]//p"

​ 命令语句sed -n "s/]//p"中,用-n参数只显示匹配的行,后面的表达式表示用空字符代替“]”,并输出。
结果显示,所有的行都去掉了“[”和“]”。
最后使用awk命令,筛选出只有IP和MAC地址的结果行,命令实现如下(实际环境中把相应的IP地址进行替换即可)∶

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

arping -c 2 -w 1 -I eth0 192.168.3.235 | grep "^Unicast" | sed -n "s/[//p" | sed -n "s/\]//p" | awk '{print $4,$5}'

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

3)创建并编写脚本文件

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

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

vim getmac.sh

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

getmac.sh脚本内容

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

​ 输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。
​ 接下来需要对局域网中所有的主机进行探测,将探测的结果筛选后重定向输出到mac文件中。对每台探测的主机重复进行前面所做的一系列的筛选操作,就需要用到循环语句。
​ 在本实验中,该局域网中共有254台主机(依据自己实验环境而定),那么对于确定的数目,可以使用for循环语句进行操作,扫描的范围越大所需要的时间越长,此处便于演示,将扫描范围改为1~5,仅演示效果。使用vim命令再次对getmac.sh脚本文件进行编辑,命令实现如下.

​ 在实验环境中,如果自己主机的IP地址的第三位为1,下面脚本文件中用192.168.1替换掉172.16.40;如果第三位为2,则用192.168.2替换掉172.16.40

使用vim打开getmac.sh文件

vim getmac.sh

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

#! /bin/bash
if [ ! -f /usr/mac ]
	then 
		touch /usr/mac
else
	mov /usr/mac /usr/mac.bak
	touch /usr/mac
fi	
for ((j=1;j<=5;j++))
do		arping -c 2 -w 1 -I eth0 192.168.3.$j | grep "^Unicast" | sed -n "s/[//p" | sed -n "s/\]//p" | awk '{print $4,$5}' | uniq >> /usr/mac
done

​ 输入完毕后,按下“ESC”键退出INSERT模式。输入“:wq”后回车退出编辑并保存文件。
​ 上述代码中,语句"uniq > > /usr/mac"表示重复的结果只保留一条,然后重定向输出到mac文件中。

4)执行脚本文件

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

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

chmod a+x getmac.sh
ll

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

执行脚本文件getmac.sh

sh getmac.sh

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

5)查看搜集结果

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

查看文件mac

cat /usr/mac

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

检测FTP服务

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

1)创建并编辑脚本文件

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

创建并编辑脚本文件

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

使用vim创建并打开getmonitor.sh

vim getmonitor.sh

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

#! /bin/bash
if [ ! -f /usr/monitor ]
	then
		touch /usr/monitor
else
	mv /usr/monitor /usr/monitor.bak
	touch /usr/monitor
fi	
2)安装nmap命令工具

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

安装nmap软件包

dnf install 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即可。)
检测IP地址为172.16.40.208的主机

nmap -sT 172.16.40.208

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

开启ftp服务并查看状态

systemctl start vsftpd
systemctl status vsftpd

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

nmap -sT 172.16.40.208

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

4)监控局域网主机

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

vim getmonitor.sh

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

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

#! /bin/bash
if [ ! -f /usr/monitor ]
    then
        touch /usr/monitor
else
    mv /usr/monitor /usr/monitor.bak
    touch /usr/monitor
fi
ipconnection=`awk'{print $1}' /usr/mac`
for i in $ipconnections
do
    echo "$i" >> /usr/monitor | nmap -sT $1 | grep "21" >> /usr/monitor
done    

5)运行脚本文件

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

chmod a+x getmonitor.sh
ll

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

执行脚本getmonitor.sh

sh getmonitor.sh

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

6)查看监控结果

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

查看monitor文件

cat /usr/monitor

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号