编写MAC记录与端口扫描脚本的shell脚本

MAC记录与端口扫描脚本

1、需求描述
编写名为system.sh的小脚本,记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;
若此文件已存在,应先转移进行备份;每行一条记录,第1列为IP地址,第2列为对应的MAC地址
检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,扫描的端口为21
2、命令测试
分析:记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;若此文件已存在,
应先转移进行备份;检查有哪些主机开启了匿名FTP服务,扫描对象为/etc/ethers文件中的所有IP地址,
扫描的端口为21
arping?–c?2?–w?1?ip?:发送MAC地址解析请求
arp?–n:纪录MAC
awk?:打印?ip与MAC地址
使用wget下载的方法测试FTP服务
3、脚本编程与调试
?通过arping命令发送ARP请求,使用if语句根据反馈结果记录MAC地址
?将网段地址(如192.168.4.)赋值给变量NADD,作为检测地址的前缀
?使用while循环语句,重复检测目标并记录MAC地址,主机地址为1~254
let??HADD++?使得ip地址的主机位自动加1
?通过awk命令过滤出/etc/ethers文件中的所有IP地址,赋值给变量TARGET,
并使用for循环语句,读取TARGET变量中的IP地址,重复探测FTP开启情况

实验步骤
1.编写名为system.sh的小脚本,记录局域网中各主机的MAC地址,保存到/etc/ethers文件中;
若此文件已存在,应先转移进行备份;每行一条记录,第1列为IP地址,第2列为对应的MAC地址

脚本文件如下:
#!/bin/bash
d=/etc/ethers
if [ -f "$d" ] ###判断有没有/etc/ethers这个文件
then
(cp /etc/ethers /etc/ethers.bark )&&[ -d "$d" ]&&[ touch "$d" ]
###有,就新备份,删除,在创个新的
else ###这里注意,直接命令,用小括号
touch "$d" ###没有就创建文件
fi
HADD=1 ###定义IP的变量参数,起始值为1
while [ $HADD -lt 12 ] ###循环语句,当IP最后为不小于12,执行循环这里是做下测试,测试完后改为12改为254
do
ping -c 3 -i 0.2 -W 3 192.168.32.$HADD &> /dev/null ###ping一下
if [ $? -eq 0 ] ###有返回值,
then
echo "192.168.32.$HADD is up" ###输出此IP开启
arp -n |grep ether |awk ‘{print $1,$3}‘ > /etc/ethers ###并将IP和对应的mac地址筛选出来,
else ###覆盖保存到/etc/ethers文件里
echo "192.168.32.$HADD is down" ###否则,输出此IP关闭
fi
let HADD++ ###每次变量加1
Done
2.更改权限,运行测试文件

3 查看/etc/ethers里面有没有存到文件

开启的IP,其和他对应关系的IP都储存到这里面来了。

2、并使用for循环语句,读取TARGET变量中的IP地址,重复探测FTP开启情况
3、配置脚本文件。直接在system.sh后面添加下面脚本如下

TARGET=$(awk ‘($1!="192.168.32.6")&&($1!="192.168.32.1"){print $1}‘ /etc/ethers)
###定义变量文件,要把网关和本机IP去掉,否则会卡机
for n in $TARGET
do
wget ftp://$n &> /dev/null ###当能用ftp下载,则匿名访问就开启了,否则关闭。
if [ $? -eq 0 ]
then
echo "ftp 匿名访问开启的服务机: $n"
else
echo "ftp 匿名访问关闭的服务机: $n"
fi
done

运行程序:

在将shell脚本中HADD参数范围改成254,运行就可以用了

原文地址:http://blog.51cto.com/14062619/2348845

时间: 2024-10-23 01:59:13

编写MAC记录与端口扫描脚本的shell脚本的相关文章

shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

一.shell脚本介绍shell脚本要想写好,必须通过不断地去练习写才能写好,没有捷径要在我们拿到一个需求的时候有一个脚本的大致思路,想到需求怎么去实现shell脚本可以大大提高我们的工作效率二.shell脚本结构和执行[[email protected] ~]# mkdir shell //创建一个shell文件夹,存放实验的shell脚本[[email protected] ~]# cd shell/[[email protected] shell]# ls[[email protected

kali学习记录之端口扫描

端口扫描的目的是识别目标系统中哪些端口是开启状态,哪些服务可以使用.比如FTP/SSH/TELNET/打印服务/web服务等等.计算机系统中共有65536个端口,因此连接这些端口并扫描出可用的端口就变的有意义了. 1.网络连接 kali的网络默认是 设备未托管状态,因此需要开启.开启方法: 修改/etc/NetworkManager/下的NetworkManger.conf文件, managed = false修改为true 重启机子 2.FPing工具 [email protected]:~#

7个shell脚本实例--shell脚本练习必备

概述 看多shell脚本实例自然就会有shell脚本的编写思路了,所以我一般比较推荐看脚本实例来练习shell脚本.下面分享几个shell脚本实例. 一.监测Nginx访问日志Exception情况,并做相应动作 假设服务器环境为lnmp,监控出现Exception错误,并钉钉通知. #场景: #1.访问日志文件的路径:/data/logs/plateno-coupon-server/plateno-coupon-server.log#2.脚本死循环,每10秒检测一次,10秒的日志条数为300条

FTP 脚本 to Shell脚本&bat脚本&python脚本

---- linux Shell 脚本: #!/bin/bash cd /home/ftpuser source ~/.bash_profile FTPIP=127.0.0.1 ftpUser=ftpuser ftpPasswd=123456 DIR=upfile DUMPFILE=DY`date +_%Y%m%d`00001_000.tar.gz echo ${FTPIP} echo ${DUMPFILE} ftp -n<<! open ${FTPIP} user ${ftpUser} ${

[Android]Recovery调用外部Shell脚本,Shell脚本使用ui_print方法

busybox_bin=/sbin/busybox # 获取PIPE get_outfd(){ if $busybox_bin ls -l /proc/self/fd/21 | $busybox_bin grep -q 'pipe'; then echo 21 else local all_pipe_file=/tmp/all_pipe_file.txt $busybox_bin ls -l /proc/self/fd/ > $all_pipe_file $busybox_bin grep 'p

20.1-4 shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法%w 星期几 %W今年的第几周cal是显示日历的时间戳可以相互查询 20.4 shell脚本中的变量 原文地址:http://blog.51cto.com/13450039/2104595

python脚本与shell脚本的结合应用

函数 system() 其中最后一个0是这个命令的返回值,为0表示命令执行成功.使用system无法将执行的结果保存起来. popen() 获取命令执行的结果,但是没有命令的执行状态,这样可以将获取的结果保存起来放到list中. commands 可以很方便的取得命令的输出(包括标准和错误输出)和执行状态位. commands.getoutput('ls')这个方法只返回执行结果result不返回状态. 在python中调用shell脚本 hello.sh 下面的512是返回的状态码,如果eix

[一] 编写第一个 Shell 脚本

什么是 Shell 脚本? 最简单的解释,一个 shell 脚本就是一个包含一系列命令的文件.shell 读取这个文件,然后执行 文件中的所有命令,就好像这些命令已经直接被输入到了命令行中一样. Shell 有些独特,因为它不仅是一个功能强大的命令行接口,也是一个脚本语言解释器.我们将会看到, 大多数能够在命令行中完成的任务也能够用脚本来实现,同样地,大多数能用脚本实现的操作也能够 在命令行中完成. 虽然我们已经介绍了许多 shell 功能,但只是集中于那些经常直接在命令行中使用的功能. She

Linux—编写shell脚本操作数据库执行sql

修改数据库数据 ??在升级应用时,我们常常会遇到升级数据库的问题,这就涉及到sql脚本的编写. ??一般我们会通过写sql脚本,然后将xxx.sql脚本放到数据库中进行source xxx.sql执行.本篇文章,我们可以通过写shell脚本来执行数据库操作. 配置文件 创建 test_sql.properties 作为shell脚本的外部配置参数修改: [[email protected] sql_sh]$ vim test_sql.properties # set parameters sta