linux下快速列出局域網(wǎng)中所有主機名(計算機名)的腳本
最近有列出局域網(wǎng)中所有主機名的需求(SMB協(xié)議里的),但是findsmb命令總是列不全,搜了搜網(wǎng)上也沒什么現(xiàn)成的解決方案,于是自己寫了個python腳本
腳本會掃描局域網(wǎng)arp表中所有ip,并嘗試解析其主機名,這樣可以較為徹底地列出相關(guān)信息。
注意,運行這個腳本需要samba-common-bin和arp-scan這兩個包,沒有的請先apt install它們。
用法:直接運行或用python3運行,然后輸入需要掃描的網(wǎng)卡名(network interface)(不知道的運行ifconfig可查,一般是ens33、eth0等,出現(xiàn)在該命令輸出最左列),然后回車等待,可能需要運行幾分鐘。
需要root權(quán)限運行?。?/p>
#!/usr/bin/env python3
import os
def shellrun(cmd):
a = os.popen(cmd)
b = a.read()
c = b.split('\n')
return c
def 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 b
def commandmaker(ip):
return 'nmblookup -A ' + ip
def getrst(iplist):
rst = []
for ip in iplist:
rst.append(shellrun(commandmaker(ip)))
return rst
def washrst(rst):
rtn = []
for line in rst:
if line[1].split(' ')[1] != 'reply':
rtn.append(line[:-1])
return rtn
def 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()
到此這篇關(guān)于linux下快速列出局域網(wǎng)中所有主機名(計算機名)的腳本的文章就介紹到這了,更多相關(guān)linux 列出局域網(wǎng)中所有主機名內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信