您当前的位置:首页 > 网站建设 > 网站维护
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery |

linux下快速列出局域网中所有主机名(计算机名)的脚本

51自学网 2022-07-04 11:40:35
  网站维护

最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本

脚本会扫描局域网arp表中所有ip,并尝试解析其主机名,这样可以较为彻底地列出相关信息。

注意,运行这个脚本需要samba-common-bin和arp-scan这两个包,没有的请先apt install它们。

用法:直接运行或用python3运行,然后输入需要扫描的网卡名(network interface)(不知道的运行ifconfig可查,一般是ens33、eth0等,出现在该命令输出最左列),然后回车等待,可能需要运行几分钟。

需要root权限运行!!

#!/usr/bin/env python3import osdef shellrun(cmd):    a = os.popen(cmd)    b = a.read()    c = b.split('/n')    return cdef cutarpresult(lst):    a = []    b = []    for line in lst[2:]:        if line != '':            a.append(line)        else:            break    for line in a:        b.append(line.split('/t')[0])    return bdef commandmaker(ip):    return 'nmblookup -A ' + ipdef getrst(iplist):    rst = []    for ip in iplist:        rst.append(shellrun(commandmaker(ip)))    return rstdef washrst(rst):    rtn = []    for line in rst:        if line[1].split(' ')[1] != 'reply':            rtn.append(line[:-1])    return rtndef main():    interface = input('which interface to use: ')    iplist = cutarpresult(shellrun('arp-scan -I ' + interface + ' -l'))    for rs in washrst(getrst(iplist)):        for line in rs:            print(line)if __name__ == '__main__':    main()

下载地址:
如何在Ubuntu 18.04(实体机)上配置OpenWRT的开发环境
基于docker部署Jenkins的详细教程
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1