您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python如何實現掃描局域網指定網段ip的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
一、問題由來
工作的局域網中,會接入很多設備,機器人上的網絡設備就2個了,一個巨哥紅外,一個海康可見光。機器人還有自身的ip。
有時候機器人掛的多了,設備維修更換中,搞來搞去就不記得ip是什么,用自帶的軟件的確能掃出來,但是這就要開兩個windows環境下的軟件,耗時耗力,折騰。正好在linux,那簡單,敲命令。
nmap -P 192.168.1.0/24
可以掃描出 192.168.1.0~192.168.1.255的全部ip
但是前提是要裝過nmap
apt-get install nmap
可總感覺在用高射炮打蚊子——大材小用
那就自己折騰折騰python吧,于是就在網上抄抄改改。
二、python掃描指定網段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()獲取當前時間
os = platform.system()判斷當前系統類型
output = os.popen()調用終端,返回值會保存在output中
每次掃描的時長大約是 76 s。
2、運行
python3 pingS.py 1
參數1是指定網段,如果想掃描192.168.5.0~192.168.5.255
則輸入:
python3 pingS.py 5
3、打包
pyinstaller -F pingS.py
打包成單一可執行文件
用上面的命令前提是已安裝pyinstaller——-(pip intsall pyinstaller)
運行完會生成一個pingS的可執行文件
cp pingS /bin
好了,到這一步,任意地方打開終端輸入:
pingS 1
都可以完成 192.168.1.0~192.168.1.255的掃描
感謝各位的閱讀!關于“python如何實現掃描局域網指定網段ip”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。