使用环境:Raspberry 3b+ +netifaces+python-nmap+nmap

调用netifaces自动获取ip地址:

def get_gateways():
return netifaces.gateways()['default'][netifaces.AF_INET][0]

将ip地址生成一个网段中所有ip地址的列表:

def get_ip_lists(ip):
ip_lists = []
for i in range(1, 256):
ip_lists.append('{}{}'.format(ip[:-1], i))
return ip_lists

主要实现代码及数据分割:

def main(ip=None):
ip=get_gateways()
ip_lists=get_ip_lists(ip)
nmScan,temp_ip_lists,hosts = nmap.PortScanner(),[],ip[:-1]+'0/24'
ret = nmScan.scan(hosts=hosts, arguments='-sP')
print('扫描时间:'+ret['nmap']['scanstats']['timestr']+'\n命令参数:'+ret['nmap']['command_line'])
for ip in ip_lists:
print('ip地址:'+ip+':')
if ip not in ret['scan']:
temp_ip_lists.append(ip)
print('扫描超时')
else:print('已扫描到主机,主机名:'+ret['scan'][ip]['hostnames'][0]['name'])
print(str(hosts) +' 网络中的存活主机:')
for ip in temp_ip_lists:ip_lists.remove(ip)
for ip in ip_lists:print(ip)

完整代码:

#!/usr/bin/python
#_*_ coding:utf8 _*_
import netifaces,nmap def get_gateways():
return netifaces.gateways()['default'][netifaces.AF_INET][0] def get_ip_lists(ip):
ip_lists = []
for i in range(1, 256):
ip_lists.append('{}{}'.format(ip[:-1], i))
return ip_lists def main(ip=None):
ip=get_gateways()
ip_lists=get_ip_lists(ip)
nmScan,temp_ip_lists,hosts = nmap.PortScanner(),[],ip[:-1]+'0/24'
ret = nmScan.scan(hosts=hosts, arguments='-sP')
print('扫描时间:'+ret['nmap']['scanstats']['timestr']+'\n命令参数:'+ret['nmap']['command_line'])
for ip in ip_lists:
print('ip地址:'+ip+':')
if ip not in ret['scan']:
temp_ip_lists.append(ip)
print('扫描超时')
else:print('已扫描到主机,主机名:'+ret['scan'][ip]['hostnames'][0]['name'])
print(str(hosts) +' 网络中的存活主机:')
for ip in temp_ip_lists:ip_lists.remove(ip)
for ip in ip_lists:print(ip) if __name__ == '__main__':
main()

实验截图:

调用python-nmap实现扫描局域网存活主机的更多相关文章

  1. Shell面试题4:扫描网络内存活主机案例

    19.1.4企业Shell面试题4:扫描网络内存活主机案例 写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些? [root@st153 tools]# cat check_ ...

  2. Python获取网络中的存活主机以及哪些主机是Linux

    这个脚本用于扫描网络中的存活主机,通常在CMDB中自动获取主机的时候用到. #!/usr/bin/env python # -*- coding: utf-8 -*- ""&quo ...

  3. [原创]K8Cscan插件之Web主机扫描(存活主机、机器名、Banner、标题)

    [原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但C ...

  4. 使用 Python 查看局域网内存活主机

    1 安装 (如果误用了 pip insatll nmap的话,要先 pip uninstall nmap) pip install python-nmap Nmap 是一款用于网络发现和安全审计的网络 ...

  5. Python基础(三):简化除法判断、分析apache访问日志、扫描存活主机、利用多线程实现ssh并发访问

    一.简化除法判断 目标: 编写mydiv.py脚本,主要要求如下: 提示用户输入一个数字作为除数 如果用户按下Ctrl+C或Ctrl+D则退出程序 如果用户输入非数字字符,提示用户应该输入数字 如果用 ...

  6. python scapy的用法之ARP主机扫描和ARP欺骗

    python scapy的用法之ARP主机扫描和ARP欺骗 目录: 1.scapy介绍 2.安装scapy 3.scapy常用 4.ARP主机扫描 5.ARP欺骗 一.scapy介绍 scapy是一个 ...

  7. Python编写类似nmap的扫描工具

    文主要是利用scapy包编写了一个简易扫描工具,支持ARP.ICMP.TCP.UDP发现扫描,支持TCP SYN.UDP端口扫描,如下: usage: python scan.py <-p pi ...

  8. python nmap模块使用进行主机探测(ICMP)

    终于审核通过了......第一次用博客,想记录自己的学习情况,分享知识. 废话不多说,第一篇blog,大牛请轻喷. 资产清点首先需要进行主机探测,将存活主机统计下来再进行进一步的指纹识别及端口探测.若 ...

  9. Nmap小技巧——探测大网络空间中的存活主机

    Nmap快速探测空间主机是否存活的技巧(来自lijiejie师傅): nmap -v -sn -PE -n --min-hostgroup --min-parallelism -oX nmap_out ...

随机推荐

  1. vim配置成c++IDE

    mv ~/.vimrc ~/.vimrcbak mv ~/.vim ~/.vimbak git clone https://github.com/handy1989/vim.git mv vim/.v ...

  2. Toad for Oracle针对于Oracle数据库的可视化管理工具使用

    Toad for Oracle安装包下载地址:http://pan.baidu.com/s/1mgBOLZU 在Oracle应用程序的开发过程中,访问数据库对象和编写SQL程序是一件乏味且耗费时间的工 ...

  3. SpringBoot | 第二章:lombok介绍及简单使用

    在去北京培训的时候,讲师说到了lombok这个第三方插件包,使用了之后发现,确实是个神奇,避免了编写很多臃肿的且定式的代码,虽然现代的IDE都能通过快捷键或者右键的方式,使用Generate Gett ...

  4. KindEditor编辑器使用

    KindEditor使用 1)kindeditor默认模式调用 <link rel="stylesheet" href="./KindEditor/themes/d ...

  5. Redis Windows环境搭建

    简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.内置复制 ...

  6. JavaFX--第2天-窗口基本的类

    1 内部匿名类和Lambda表达式 2 Switching Scene 3 信息提示框 (Alert Boxes) 前情回顾: 前面的学习内容:关于JavaFX的基本概念,以及窗口所使用的类的一个介绍 ...

  7. IO模型与soketserver实现并发

    一 IO模型介绍 为了更好地了解IO模型,我们需要事先回顾下:同步.异步.阻塞.非阻塞 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非 ...

  8. js技巧-使用reduce实现更简洁的数组对象去重和数组扁平化

    Array.prototype.reduce()方法介绍: 感性认识reduce累加器: const arr = [1, 2, 3, 4]; const reducer = (accumulator, ...

  9. koa源码分析

    最近项目要使用koa,所以提前学习一下,顺便看了koa框架的源码. 注:源码是koa2.x koa的源码很简洁,关键代码只有4个文件,当然还包括一些依赖npm包 const Koa = require ...

  10. 【extjs6学习笔记】1.13 初始: 模型

    Ext JS包括数据包Ext.data包括处理从服务器保存和检索数据的类. 以下是Ext JS 6数据包中的重要类: Model (Ext.data.Model) Store (Ext.data.St ...