Linux shell脚本练习(MAC地址记录和端口扫描脚本)

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 

在这里插入图片描述

发布了43 篇原创文章 · 获赞 56 · 访问量 7919

猜你喜欢

转载自blog.csdn.net/weixin_42953006/article/details/103447639