Home >Backend Development >Python Tutorial >How to call python-nmap to scan for live hosts on the LAN (code)

How to call python-nmap to scan for live hosts on the LAN (code)

不言
不言Original
2018-09-20 16:59:217491browse

The content of this article is about how to call python-nmap to scan the LAN for surviving hosts (code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Usage environment: Raspberry 3b netifaces python-nmap nmap

Call netifaces to automatically obtain the ip address:

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

Change the ip The address generates a list of all IP addresses in the network segment:

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

Mainly implements code and data segmentation:

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)

Full code:

#!/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()

Experimental screenshot:

The above is the detailed content of How to call python-nmap to scan for live hosts on the LAN (code). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn