扫描局域网内所有主机和MAC地址的Shell脚本
#!/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.lst
for (( i=$((2#$MyNet+1)); i< $((2#$MyBro)); i++ )); do
Tmp=$(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.lst
exit 0
}
if test -n "$1" && test $1 != lo && `ifconfig $1>/dev/null 2>&1`; then
ScanIpMac $1;
else
echo 'NOTE: please enter the right parameter.'
echo 'For example: ScanIpMac eth0.'
exit 1
fi http://www.kuqin.com/networkmanagement/20110918/264970.html
扫描局域网内所有主机和MAC地址的Shell脚本的更多相关文章
- 使用ARP获取局域网内设备IP和MAC地址
根据Arp列表数据,查询本地设备在线状态 使用 arp -a 获得所有内网地址,首先看Mod对象 public struct MacIpPair { public string HostName; p ...
- 查看局域网内某个ip的mac地址
首先需要ping一下对方的ip,确保本地的arp表中缓存对方的ip和mac的关系 C:\Windows\System32>ping 192.168.1.231 正在 Ping 192.168 ...
- Linux下通过nmap扫描局域网内设备,获取ip地址和mac地址
安装nmap sudo apt-get install nmap 扫描 sudo nmap -sP -PI -PT
- arp命令(windows ),nmap查看局域网内所有主机IP和MAC
ARP命令详解 ARP是一个重要的TCP/IP协议,并且用于确定对应IP地址的网卡物理地址.实用arp命令,我们能够查看本地计算机或另一台计算机的ARP高速缓存中的当前内容.此外,使用arp命令,也可 ...
- 局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目(转)
局域网内其他主机如何访问运行在宿主机的虚拟机中的Django项目 1.在宿主机cmd中查看宿主机的ip(注意区分主机中虚拟机的ip) 我连的是无线,IP如下 2.在Django项目的mysit ...
- Snmp协议应用-扫描局域网内打印机
.h2cls { background: #6fa833 none repeat scroll 0 0 !important; color: #fff; font-family: "微软雅黑 ...
- 访问局域网内其他主机的VMware虚拟机上的mysql数据库和redis缓存
上一篇写了访问局域网内其他主机的虚拟机上的项目 ,现在说说访问局域网内其他主机的虚拟机上的数据库和缓存 博主使用的linux是Ubuntu16.04: 一.安装数据库和缓存 这里连接的数据库和缓存以m ...
- Linux 下查看局域网内所有主机IP和MAC
linux环境下,执行namp对局域网扫描一遍,然后查看arp缓存表就可以知道局域内ip对应的mac.namp比较强大也可以直接扫描mac地址和端口,执行扫描之后就可以在/proc/net/arp查看 ...
- 扫描局域网内的ip和主机名
1. 目的 今天发现我配置的一台电脑ip被人占用了,所以准备写个程序扫描一下局域网内所有正在使用的ip和主机名 2. 实现--直接上代码 import time import threading im ...
随机推荐
- Miller&&Pollard HDOJ 4344 Mark the Rope
题目传送门 题意:一个长为n(n<2^63)的管子,在管子上做标记,每隔L个长度单位做一个标记,从管子头端开始,保证最后一次标记恰好在管子的尾端.让你找出有多少个这样的L(L<n),且他们 ...
- 首先定义一个5X8的二维数组,然后使用随机数填充满。借助Arrays的方法对二维数组进行排序。
package day02; import java.util.Arrays; import java.util.Random; public class Test01 { public static ...
- JDK常用类解读--String
一.字符串的不变性: 文章使用的源码是jdk1.8的.(下同) 1.首先可以看到`String`是`final`类,说明该类不可继承,保证不会被子类改变语义 2.String的值实际上就是一个字符数组 ...
- 关于通过spring-web的ServletRequestUtils工具类对获取getParameter传参的默认转换基本数据类型的学习
基于spring-web(4.1.4)包的org.springframework.web.bind.ServletRequestUtils工具类对HttpServletRequest获取的传递入参获取 ...
- java自动包装与解包
关于java的自动包装机制想必大家都用过吧,一般这些机制都用于在往容器中存储基本类型数据的时候,因为容器中不允许存在基本数据类型,所以就会调用自动包装机制,将基本数据类型转换为对象,将基本数据保存在对 ...
- mysql 的 case when then 用法 和null 的判断
表:一个表 aa 有两个字段 id 和 sex ,第1条记录的sex 为空串 ('') 第二条记录的sex 为空 (null) 1. 用法: 第一种: select (case 字段名 whe ...
- 用yunio网盘搭建git私有仓库
研究生开始奔波于教研室和寝室之间,于是想搭建一个git私有仓库来管理自己在做的项目或者学习资料.一来可以很方便的管理项目,二来可以学习使用git.我的主要工作平台是Linux,这也是我选择yuni ...
- H.264学习笔记2——帧内预测
帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值. ...
- SQL条件语句(IF, CASE WHEN, IF NULL)
1.IF 表达式:IF( expr1 , expr2 , expr3 ) expr1条件,条件为true,则值是expr2 ,false,值就是expr3 SELECT o.id,u.acco ...
- xamarin.forms 绑定页面里指定元素的某个属性值
{Binding Source={x:Reference elementName}, Path=BindingContext.propertyname, Mode=OneWay} elementNam ...