最近有列出局域网中所有主机名的需求(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()
到此这篇关于linux下快速列出局域网中所有主机名(计算机名)的脚本的文章就介绍到这了,更多相关linux 列出局域网中所有主机名内容请搜索优爱好网以前的文章或继续浏览下面的相关文章希望大家以后多多支持优爱好网!
相关文章:
1. Win11控制面板一直闪烁怎么回事?Win11控制面板打不开一直闪解决方法2. 苹果macOS Big Sur系统电脑怎么安装微信? mac安装微信的两种方法3. Win11语音输入没反应怎么办?Win11无法使用语音输入解决方法4. win11系统中未检测到nvidia图形卡? Win11 nvidia显卡不见了的解决办法5. Win11手柄连接成功用不了的解决方法6. 移动硬盘通过Mac磁盘工具抹掉磁盘不小心强制退出急救方法7. Win11 win+e快捷键用不了怎么办? Win11资源管理器打不开的解决办法8. Win11笔记本合盖不休眠怎么设置?Win11笔记本合盖继续播放音乐教学9. mac os显示器怎么快速黑屏? MacOS睡眠快捷键的使用方法10. Win11中sysmain服务能关吗? Win11禁用sysmain服务的技巧
