扫描局域网内所有主机和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 ...
随机推荐
- 转 叫板OpenStack:用Docker实现私有云
http://www.cnblogs.com/alexkn/p/4239457.html 看到各大厂商的云主机,会不会觉得高大上?目前大公司的主流方案是OpenStack,比如某个公司的私有云
- 如何成为一名优秀的 iOS 开发工程师
如果你是一位专业的iOS开发工程师,你应该为自己感到自豪.因为你能在强大的iOS系统下,一展身手实现自己和他人的想法,这是一件令人无比激动的事情. 作为一名iOS开发工程师,你一定想成为行业的佼佼者. ...
- orcale 数据库的一些知识
最近学了一些Oracle数据库的知识,我想自己整理一下,以后也方便自己查阅的. orcale 数据库登录(tiger) 1. sql plus 登录 用户名: sys 口令: 主机字符串:orcl a ...
- struts2 <allowed-methods > 标签配置
1.在struts2 2.5版本中添加了对方法访问的权限,如果没有被添加到<allow-method> 方法的标签,将会报一下错误 5:05:18.078 [http-apr-8020 ...
- [转] NTFS Permission issue with TAKEOWN & ICACLS
(转自:NTFS Permission issue with TAKEOWN & ICACLS - SAUGATA 原文日期:2013.11.19) Most of us using TA ...
- AWT编程时,Button按钮上的中文编程□□□
今天学到AWT编程时,照着书上的代码打,代码如下: import java.awt.*; public class PanelTest{ public static void main(Stri ...
- zabbix_sender
转载一个python写的zabbix sender脚本 #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import struc ...
- 如何选安卓android|linux系统开发板,简化学习难度,缩短开发进程
平台一:iTOP-4412精英版 系统支持:Android 4.0.3系统 / Android 4.4系统 / Linux + Qt系统 / Ubuntu12.04系统 开发板特点:Cortex-A ...
- netstat -a 显示出你的计算机当前所开放的所有端口
netstat -s -e 比较详细的显示你的网络资料,包括TCP.UDP.ICMP 和 IP的统计等
- Win7 与win10绘制桌面壁纸的区别
win7使用csrss.exe绘制壁纸. win10使用explorer.exe绘制壁纸.