介绍
这篇文章主要讲解了linux下快速列出局域网中所有主机名的脚本的方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本
脚本会扫描局域网arp表中所有的ip,并尝试解析其主机名,这样可以较为彻底地列出相关信息。
注意,运行这个脚本需要samba-common-bin和arp-scan这两个包,没有的请先apt安装它们。
用法:直接运行或用python3运行,然后输入需要扫描的网卡名(网络接口)(不知道的运行ifconfig可查,一般是ens33, eth0等,出现在该命令输出最左列),然后回车等待,可能需要运行几分钟。
需要根权限运行! !
# !/usr/bin/env python3 进口操作系统 def shellrun (cmd): 一个=os.popen (cmd) b=a.read () c=b.split (& # 39; \ n # 39;) 返回c def cutarpresult (lst): 一个=[] b=[] 线的lst [2]: 如果行!=& # 39;& # 39;: a.append(线) 其他: 打破 为一行: b.append (line.split (& # 39; \ t # 39;) [0]) 返回b def commandmaker (ip): 返回& # 39;nmblookup——& # 39;+ ip def getrst (iplist): rst=[] 对ip iplist: rst.append (shellrun (commandmaker (ip))) 返回rst def washrst (rst): 研制=[] rst的线: 如果行[1].split (& # 39;& # 39;)[1]!=& # 39;回复# 39;: rtn.append([1]):行 返回研制 def main (): 界面=输入(& # 39;使用哪个接口:& # 39;) iplist=cutarpresult (shellrun (& # 39; arp-scan我& # 39;+接口+ & # 39;- l # 39;)) 在washrst rs (getrst (iplist)): 在rs: print(线) if __name__==& # 39; __main__ # 39;: main ()
看完上述内容,是不是对linux下快速列出局域网中所有主机名的脚本的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。