扫描MAC地址脚本

呵呵,脚本写得不是很好,希望有高手帮我完善,比如使用了外部命令,或语法规范,或更妙的技巧,或更加灵活性……

#!/bin/bash
#author:        InBi
#date:          2011-08-16
#website:       http://www.itwhy.org/2011/08-20/939.html
########################################################
ScanIpMac(){Ip_Bin=$(ifconfig $1|sed -rn '/inet /{s/[^:]*:([^ ]*).*/obase=2;\1/;s/\./;/gp}'|bc|xargs printf "%08d")Mask_Bin=$(ifconfig $1|sed -rn '/inet /{s/.*Mask:([^ ]*).*/obase=2;\1/;s/\./;/gp}'|bc|xargs printf "%08d")#把IP和netmask每一段转换成二进制,然后连接起来。Mask_Lng=`printf ${Mask_Bin%%0*}|wc -c`#计算出netmask为“1”的部份有多少位。MyNet=${Ip_Bin:0:$Mask_Lng}$(printf "%0$((32-$Mask_Lng))d")MyBro=${Ip_Bin:0:$Mask_Lng}$(printf "%0$((32-$Mask_Lng))d"|tr 0 1)#计算出本机的网络号与广播号,用于下面循环。echo -e "\n---------- "start at $(date +"%Y-%m-%d %H:%M:%S")" ----------\n">$HOME/ScanIpMac.lstfor (( i=$((2#$MyNet+1)); i< $((2#$MyBro)); i++ )); doTmp=$(echo "obase=2;$i"|bc)Ip=$(for i in {0..3};do test $i != 0 && printf '.'; printf $((2#${Tmp:$i*8:8}));done)#每一次循环数换成二进制,然后8位分一段换成十制制,再连接起来。arping -w 0.3 -c 1 $Ip > /dev/null 2>&1 &#发送 ARP 包,且不等待响应就进行下一次循环。done;sleep 5#等待 5 秒。arp -n -i $1 2>/dev/null|grep ':'|sort -n -u -t "." -k1,1 -k2,2 -k3,3 -k4,4|awk -F ' ' '{print  $1"\t\t"$3}'|tee -a $HOME/ScanIpMac.lst#arp -n 输出按 IP 排序后重定向到 ScanIpMac.lst 文件,并打印至标准输出。echo -e "\n---------- "End at $(date +"%Y-%m-%d %H:%M:%S")" ------------">>$HOME/ScanIpMac.lstexit 0
}
if test -n "$1" && test $1 != lo && `ifconfig $1>/dev/null 2>&1`; thenScanIpMac $1;
elseecho 'NOTE: please enter the right parameter.'echo 'For example: ScanIpMac eth0.'exit 1
fi

2011-08-20 更新了获取IP和MASK的方法。感谢ubuntu论坛的“我就是我2”的帮助。
2011-08-21 改进获取字符串长度的方法:printf ${Mask_Bin%%0*}|wc -c,感谢 ubuntu论坛的“fnan”指点
2011-08-25 再次改进,哈哈,还是上面两位的指点。
2011-08-26 增加参数输入,使脚本更加灵活。并且提高了速度,以前需要20分钟,现在只要20秒就行了。

扫描MAC地址脚本结果

呵呵,只列图哦,不想费话,因为要睡觉了。

192.168.22.1                    08:10:17:6d:04:9c
192.168.22.5                    08:11:17:6d:a4:21
192.168.22.6                    08:14:17:6d:b0:3e
192.168.22.9                    08:10:57:6d:aa:0c
192.168.22.20                    08:10:57:6d:0a:ae
192.168.22.21                    08:60:15:6d:0e:ac

扫描MAC地址脚本--保存相关推荐

  1. Centos 7 环境下将修改后的MAC地址永久保存

    Centos 7 环境下将修改后的MAC地址永久保存的正确的步骤如下: #ifconfig eth0 down #vim /etc/sysconfig/network-scripts/ifcfg-et ...

  2. 37张图详解MAC地址、以太网、二层转发、VLAN

    目录 MAC 地址 每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址.MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的, ...

  3. centos7 修改mac地址

    Centos 7 环境下将修改后的MAC地址永久保存的正确的步骤如下: #ifconfig eth0 down #vim /etc/sysconfig/network-scripts/ifcfg-et ...

  4. 一款小巧好用的MAC地址扫描器

    针对局域网任一网段,高速扫描MAC地址并以列表显示. 转载于:https://blog.51cto.com/mycdsee/124210

  5. 网卡MAC地址相关信息大全

    原文链接:http://blog.csdn.net/piggyxp/article/details/170250 首先要感谢jzyhummel(刀锋[篱影]) 兄弟提供的部分资料^_^ 网卡地址这个概 ...

  6. 闲谈mac地址学习以及IVL/SVL

    静态mac:静态mac永远不会老化 动态mac: mac地址学习到的,放在交换机二层表里面的mac地址 mac地址老化:将mac地址学习到的mac地址从二层表中移除 mac地址学习: 黑洞mac:接收 ...

  7. linux改mac地址目录,Linux下如何修改网卡MAC地址

    网上有很多关于linux下修改MAC地址的方法,大多依葫芦画瓢,似乎都没验证过,达不到修改的目的. 经过我的详细测试,最终成功解决了这个问题. 误区一: #ifconfig eth0 down #if ...

  8. linux内核设置mac地址,Linux下如何修改网卡MAC地址

    Red Hat Linux下如何修改网卡MAC地址 OS版本:Red Hat Enterprise Linux AS4 核心:Kernel 2.6.9-42 网上有很多关于linux下修改MAC地址的 ...

  9. 网卡MAC地址相关信息大全(整理)(上)

    首先要感谢jzyhummel(刀锋[篱影]) 兄弟提供的部分资料^_^ 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址,一般说网卡地址我是指物理地址,不知道别人怎么看?物理地 ...

最新文章

  1. EnterLib PIAB又一个BUG?
  2. Practical Lessons from Predicting Clicks on Ads at Facebook (2014)论文阅读
  3. linux 下执行.sh文件总是提示permission denied
  4. 第十九节: 结合【表达式目录树】来封装EF的BaseDal层的方法
  5. java远程debug
  6. 解决eclipse出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
  7. 360 java插件设置_jdk环境变量一键设置 管理員运行
  8. 中国互联网的第二次“千团大战”已经开始了
  9. 《Android游戏开发详解》一1.1 什么是编程
  10. 爬虫入门-京东评论爬取和简单分析[学习笔记]
  11. 深入浅出统计学-第三章
  12. PHP+Swoole 搭建 Websocket 聊天室
  13. C#简易计算器(加减乘除三角函数运算)
  14. 任务栏文件资源管理器打开特别卡
  15. 知来者之可追_#AboutLastWeek:老朋友,新来者以及介于两者之间的人
  16. 局域网中的IP是怎么确定和分配下来的
  17. CPU中的通用寄存器
  18. 莫烦Python NumpyPandas 学习笔记
  19. 兰伯特(Lambert)方程的求解算法1
  20. 基于3D视觉的三维人体重建方法漫谈

热门文章

  1. TTL、CMOS、LVTTL、LVCMOS、LVDS
  2. 百问网物联网实战-STM32中断
  3. studio one机架效果包
  4. 做好异常处理,防止无故翻车
  5. 【MIKE水动力】MIKE11基本原理
  6. angular自带的jquery lite用法实例,不用引入jq照样回到老夫就用jq的感觉~
  7. 小米android手机密码忘了怎么解锁,小米手机锁屏密码忘了怎么解锁?
  8. antd 表格分页功能
  9. rsa public key not find与Generate First a serial的解决方案-6.13日摸索总结
  10. docker下安装typecho建立自己得博客系统(1)dockerfile篇