linux下快速列出局域网中所有主机名的脚本的方法

  介绍

这篇文章主要讲解了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下快速列出局域网中所有主机名的脚本的方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

linux下快速列出局域网中所有主机名的脚本的方法