一、脚本需求
- 编写名为system.sh的脚本,记录局域网中各主机的MAC地址,保存到/etc/ethers文件中
- 若此文件已存在,应先转移进行备份;每行一条记录, 第1列为IP地址,第2列为对应的MAC地址
- 检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口为21
二、命令测试
分析:记录局域网中各主机的MAC地址;检查有哪些主机
开启了匿名FTP服务
arping -c 1 -I ens33 ip :发送MAC地址解析请求
awk :打印ip与MAC地址
使用wget下载的方法测试FTP服务
三、脚本编程与调试
- 通过arping命令发送ARP请求,使用if语句根据反馈结果记录MAC地址
- 将网段地址(如192.168.179.) 赋值给变量,作为检测地址的前缀
- 使用while循环语句,重复检测目标并记录MAC地址,主机地址为1~254
- let ++使得ip地址的主机位自动加1
- 通过awk命令过滤出/etc/ethers文件中的所有IP地址,赋值给变量,并使用for循环语句,读取TARGET变量中的IP地址,重复探测FTP开启情况
四、脚本内容
[root@localhost opt]# vim system.sh
#!/bin/bash
#判断/etc/ethers文件是否存在
[ -e /etc/ethers ]
if [ $? -eq 0 ];then
cp -p /etc/ethers /opt/ethers
else
touch /etc/ethers
fi
#记录局域网内在线主机的MAC地址
i=1
while [ $i -lt 254 ]
do
arping -c 1 -I ens33 192.168.179.$i &> /dev/null
if [ $? -eq 0 ];then
arping -c 1 -I ens33 192.168.179.$i | awk 'NR==2{print $4,$5}' > /etc/ethers
fi
let i++
done
#判断主机是否开启ftp服务
a=$(awk '{print $1}' /etc/ethers)
for b in $a
do
wget -T 3 -t 1 ftp://$b &> /dev/null
if [ $? -eq 0 ];then
echo "$b主机已开启匿名ftp服务"
fi
done
五、测试
开启一台虚拟机,ip地址为192.168.179.110并开启ftp服务,在另一台虚拟机中开启脚本进行测试
[root@localhost opt]# bash system.sh
192.168.179.110主机已开启匿名ftp服务
[root@localhost opt]# cat /etc/ethers
192.168.179.1 [00:50:56:C0:00:08]
192.168.179.2 [00:50:56:EA:EF:41]
192.168.179.110 [00:0C:29:A4:D1:51]