這篇文章主要講解了linux下快速列出局域網(wǎng)中所有主機名的腳本的方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
最近有列出局域網(wǎng)中所有主機名的需求(SMB協(xié)議里的),但是findsmb命令總是列不全,搜了搜網(wǎng)上也沒什么現(xiàn)成的解決方案,于是自己寫了個python腳本
腳本會掃描局域網(wǎng)arp表中所有ip,并嘗試解析其主機名,這樣可以較為徹底地列出相關信息。
注意,運行這個腳本需要samba-common-bin和arp-scan這兩個包,沒有的請先apt install它們。
用法:直接運行或用python3運行,然后輸入需要掃描的網(wǎng)卡名(network interface)(不知道的運行ifconfig可查,一般是ens33、eth0等,出現(xiàn)在該命令輸出最左列),然后回車等待,可能需要運行幾分鐘。
需要root權限運行?。?/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()
網(wǎng)站標題:linux下快速列出局域網(wǎng)中所有主機名的腳本的方法-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://www.rwnh.cn/article14/hdege.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、小程序開發(fā)、搜索引擎優(yōu)化、服務器托管、網(wǎng)頁設計公司、外貿網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容