Linux shell脚本练习(MAC记录和端口扫描脚本)
需求:
(1)编写名为 system.sh 的小脚本,记录局域网中各主机的 MAC 地址,保存到/etc/ethers 文件中。
(2)若此文件已存在,应先转移进行备份;每行一条记录,第 1 列为 IP 地址,第 2 列为对应的 MAC 地址。
(3) 检查有哪些主机开启了匿名 FTP 服务,扫描对象为/etc/ethers 文件中的所有 IP 地址, 扫描的端口为 21。
编写步骤
1,创建system.sh脚本,并写入脚本程序
#!/bin/bash
a=/etc/ethers #定义变量
if [ -e "$a" ] #判断有没有/etc/ethers这个文件
then
(cp /etc/ethers /etc/ethers.bak)&&(rm -rf "$a") &&(touch "$a")
#有,就新备份,删除,在创个新的
else
touch "$a" #没有就创建文件
fi
###记录MAC地址
hadd=1
while [ $hadd -le 10 ] #循环语句,当IP最后为不小于10,执行循环这里是做下测试,测试完后改为254
do
let hadd++
ping -c 2 -i 0.2 -w 1 192.168.5.$hadd >&/dev/null #ping一下
if [ $? -eq 0 ] ;then #有返回值
echo "主机192.168.5.$hadd 已经开启"
arp -n |awk '/ens33$/{print$1,$3}' > /etc/ethers #将IP和对应的mac地址筛选出来
else #覆盖保存到/etc/ethers文件里
echo "主机192.168.5.$hadd 未开启" #否则,输出此IP关闭
fi
done
###端口扫描
yum install nmap -y ###安装nmap端口扫描工具
targrt=$(cat /etc/ethers | awk '/^192/{print $1}' ) ###定义变量文件
for a in $targrt
do
b=$(nmap $a | grep "ftp"|awk '{print $3}' ) ###定义变量
if [ "$b" = "ftp" ] ###当能扫描到对方ftp服务开启
then
echo "ftp服务开启的主机为:$a" ###则ftp匿名访问就开启了
else
echo "ftp服务关闭的主机为:$a" ## #否则关闭
fi
done
2,打开同一个局域网内测试用的主机,安装vsftpd服务并开启,关闭防火墙和增强型安全服务。
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# systemctl restart vsftpd
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
3,执行脚本
由于测试用的主机是192.168.5.143,所以我们来看下这个主机的信息情况。
[root@localhost ~]# bash system.sh