python實(shí)現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法
一、問題由來
工作的局域網(wǎng)中,會(huì)接入很多設(shè)備,機(jī)器人上的網(wǎng)絡(luò)設(shè)備就2個(gè)了,一個(gè)巨哥紅外,一個(gè)??悼梢姽狻C(jī)器人還有自身的ip。
有時(shí)候機(jī)器人掛的多了,設(shè)備維修更換中,搞來搞去就不記得ip是什么,用自帶的軟件的確能掃出來,但是這就要開兩個(gè)windows環(huán)境下的軟件,耗時(shí)耗力,折騰。正好在linux,那簡單,敲命令。
nmap -P 192.168.1.0/24
可以掃描出 192.168.1.0~192.168.1.255的全部ip
但是前提是要裝過nmap
apt-get install nmap
可總感覺在用高射炮打蚊子——大材小用
那就自己折騰折騰python吧,于是就在網(wǎng)上抄抄改改。
二、python掃描指定網(wǎng)段ip
1、demo
pingS.py import sys import os import time import _thread import datetime def get_os(): os = platform.system() if os == "Windows": return "n" else: return "c" def ping_ip(ip_str): cmd = ["ping", "-{op}".format(op=get_os()), "1", ip_str] output = os.popen(" ".join(cmd)).readlines() flag = False for line in list(output): if not line: continue if str(line).upper().find("TTL") >=0: flag = True break if flag: print("*** *** *** ip: %s is OK *** *** ***"%(ip_str)) def find_ip(ip_prefix): for i in range(1,256): ip = ('%s.%s'%(ip_prefix,i)) _thread.start_new_thread(ping_ip, (ip,)) time.sleep(0.3) if __name__ == "__main__": startTime = datetime.datetime.now() print("start time %s"%(time.ctime())) net=sys.argv[1] args = "".join(("192.168."+net+".1")) ip_prefix = '.'.join(args.split('.')[:-1]) find_ip(ip_prefix) endTime = datetime.datetime.now() print("end time %s"%(time.ctime())) print("total takes :",(endTime - startTime).seconds)
python3除移thread模塊,為了兼容性使用_thread代替,最安全用法是使用threading模塊
datetime.datetime.now()獲取當(dāng)前時(shí)間
os = platform.system()判斷當(dāng)前系統(tǒng)類型
output = os.popen()調(diào)用終端,返回值會(huì)保存在output中
每次掃描的時(shí)長大約是 76 s。
2、運(yùn)行
python3 pingS.py 1
參數(shù)1是指定網(wǎng)段,如果想掃描192.168.5.0~192.168.5.255
則輸入:
python3 pingS.py 5
3、打包
pyinstaller -F pingS.py
打包成單一可執(zhí)行文件
用上面的命令前提是已安裝pyinstaller——-(pip intsall pyinstaller)
運(yùn)行完會(huì)生成一個(gè)pingS的可執(zhí)行文件
cp pingS /bin
好了,到這一步,任意地方打開終端輸入:
pingS 1
都可以完成 192.168.1.0~192.168.1.255的掃描
總結(jié)
以上所述是小編給大家介紹的python實(shí)現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
利用Python中SocketServer 實(shí)現(xiàn)客戶端與服務(wù)器間非阻塞通信
本文主要介紹了利用Python中SocketServer 實(shí)現(xiàn)客戶端與服務(wù)器間非阻塞通信示例代碼,具有很好的參考價(jià)值,需要的朋友一起來看下吧2016-12-12詳解Python如何實(shí)現(xiàn)尾遞歸優(yōu)化
尾遞歸是函數(shù)返回最后一個(gè)操作是遞歸調(diào)用,則該函數(shù)是尾遞歸。本文將介紹Python是如何實(shí)現(xiàn)尾遞歸優(yōu)化的,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05Python實(shí)現(xiàn)二叉樹結(jié)構(gòu)與進(jìn)行二叉樹遍歷的方法詳解
二叉樹是最基本的數(shù)據(jù)結(jié)構(gòu),這里我們在Python中使用類的形式來實(shí)現(xiàn)二叉樹并且用內(nèi)置的方法來遍歷二叉樹,下面就讓我們一起來看一下Python實(shí)現(xiàn)二叉樹結(jié)構(gòu)與進(jìn)行二叉樹遍歷的方法詳解2016-05-05如何用Python和JS實(shí)現(xiàn)的Web SSH工具
這篇文章主要介紹了如何用Python和JS實(shí)現(xiàn)的Web SSH工具,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02Python中移除List重復(fù)項(xiàng)的五種方法
本文列些處幾種去除在Python 列表中(list)可能存在的重復(fù)項(xiàng),這在很多應(yīng)用程序中都會(huì)遇到的需求,本文介紹幾種方法,感興趣的可以了解一下2021-05-05Python實(shí)現(xiàn)針對給定單鏈表刪除指定節(jié)點(diǎn)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)針對給定單鏈表刪除指定節(jié)點(diǎn)的方法,結(jié)合實(shí)例形式分析了Python單鏈表的定義、節(jié)點(diǎn)添加、刪除、打印等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04