扫描MAC地址脚本--保存
扫描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地址脚本--保存相关推荐
- Centos 7 环境下将修改后的MAC地址永久保存
Centos 7 环境下将修改后的MAC地址永久保存的正确的步骤如下: #ifconfig eth0 down #vim /etc/sysconfig/network-scripts/ifcfg-et ...
- 37张图详解MAC地址、以太网、二层转发、VLAN
目录 MAC 地址 每个网卡或三层网口都有一个 MAC 地址, MAC 地址是烧录到硬件上,因此也称为硬件地址.MAC 地址作为数据链路设备的地址标识符,需要保证网络中的每个 MAC 地址都是唯一的, ...
- centos7 修改mac地址
Centos 7 环境下将修改后的MAC地址永久保存的正确的步骤如下: #ifconfig eth0 down #vim /etc/sysconfig/network-scripts/ifcfg-et ...
- 一款小巧好用的MAC地址扫描器
针对局域网任一网段,高速扫描MAC地址并以列表显示. 转载于:https://blog.51cto.com/mycdsee/124210
- 网卡MAC地址相关信息大全
原文链接:http://blog.csdn.net/piggyxp/article/details/170250 首先要感谢jzyhummel(刀锋[篱影]) 兄弟提供的部分资料^_^ 网卡地址这个概 ...
- 闲谈mac地址学习以及IVL/SVL
静态mac:静态mac永远不会老化 动态mac: mac地址学习到的,放在交换机二层表里面的mac地址 mac地址老化:将mac地址学习到的mac地址从二层表中移除 mac地址学习: 黑洞mac:接收 ...
- linux改mac地址目录,Linux下如何修改网卡MAC地址
网上有很多关于linux下修改MAC地址的方法,大多依葫芦画瓢,似乎都没验证过,达不到修改的目的. 经过我的详细测试,最终成功解决了这个问题. 误区一: #ifconfig eth0 down #if ...
- linux内核设置mac地址,Linux下如何修改网卡MAC地址
Red Hat Linux下如何修改网卡MAC地址 OS版本:Red Hat Enterprise Linux AS4 核心:Kernel 2.6.9-42 网上有很多关于linux下修改MAC地址的 ...
- 网卡MAC地址相关信息大全(整理)(上)
首先要感谢jzyhummel(刀锋[篱影]) 兄弟提供的部分资料^_^ 网卡地址这个概念有点混淆不清.因为实际上有两个地址,mac地址和物理地址,一般说网卡地址我是指物理地址,不知道别人怎么看?物理地 ...
最新文章
- EnterLib PIAB又一个BUG?
- Practical Lessons from Predicting Clicks on Ads at Facebook (2014)论文阅读
- linux 下执行.sh文件总是提示permission denied
- 第十九节: 结合【表达式目录树】来封装EF的BaseDal层的方法
- java远程debug
- 解决eclipse出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path
- 360 java插件设置_jdk环境变量一键设置 管理員运行
- 中国互联网的第二次“千团大战”已经开始了
- 《Android游戏开发详解》一1.1 什么是编程
- 爬虫入门-京东评论爬取和简单分析[学习笔记]
- 深入浅出统计学-第三章
- PHP+Swoole 搭建 Websocket 聊天室
- C#简易计算器(加减乘除三角函数运算)
- 任务栏文件资源管理器打开特别卡
- 知来者之可追_#AboutLastWeek:老朋友,新来者以及介于两者之间的人
- 局域网中的IP是怎么确定和分配下来的
- CPU中的通用寄存器
- 莫烦Python NumpyPandas 学习笔记
- 兰伯特(Lambert)方程的求解算法1
- 基于3D视觉的三维人体重建方法漫谈
热门文章
- TTL、CMOS、LVTTL、LVCMOS、LVDS
- 百问网物联网实战-STM32中断
- studio one机架效果包
- 做好异常处理,防止无故翻车
- 【MIKE水动力】MIKE11基本原理
- angular自带的jquery lite用法实例,不用引入jq照样回到老夫就用jq的感觉~
- 小米android手机密码忘了怎么解锁,小米手机锁屏密码忘了怎么解锁?
- antd 表格分页功能
- rsa public key not find与Generate First a serial的解决方案-6.13日摸索总结
- docker下安装typecho建立自己得博客系统(1)dockerfile篇