linux下快速列出局域网中所有主机名(计算机名)的脚本
最近有列出局域网中所有主机名的需求(SMB协议里的),但是findsmb命令总是列不全,搜了搜网上也没什么现成的解决方案,于是自己写了个python脚本
脚本会扫描局域网arp表中所有ip,并尝试解析其主机名,这样可以较为彻底地列出相关信息。
注意,运行这个脚本需要samba-common-bin和arp-scan这两个包,没有的请先aptinstall它们。
用法:直接运行或用python3运行,然后输入需要扫描的网卡名(networkinterface)(不知道的运行ifconfig可查,一般是ens33、eth0等,出现在该命令输出最左列),然后回车等待,可能需要运行几分钟。
需要root权限运行!!
#!/usr/bin/envpython3
importos
defshellrun(cmd):
a=os.popen(cmd)
b=a.read()
c=b.split('\n')
returnc
defcutarpresult(lst):
a=[]
b=[]
forlineinlst[2:]:
ifline!='':
a.append(line)
else:
break
forlineina:
b.append(line.split('\t')[0])
returnb
defcommandmaker(ip):
return'nmblookup-A'+ip
defgetrst(iplist):
rst=[]
foripiniplist:
rst.append(shellrun(commandmaker(ip)))
returnrst
defwashrst(rst):
rtn=[]
forlineinrst:
ifline[1].split('')[1]!='reply':
rtn.append(line[:-1])
returnrtn
defmain():
interface=input('whichinterfacetouse:')
iplist=cutarpresult(shellrun('arp-scan-I'+interface+'-l'))
forrsinwashrst(getrst(iplist)):
forlineinrs:
print(line)
if__name__=='__main__':
main()
到此这篇关于linux下快速列出局域网中所有主机名(计算机名)的脚本的文章就介绍到这了,更多相关linux列出局域网中所有主机名内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!