python實現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法
一、問題由來
工作的局域網(wǎng)中,會接入很多設(shè)備,機器人上的網(wǎng)絡(luò)設(shè)備就2個了,一個巨哥紅外,一個??悼梢姽?。機器人還有自身的ip。
有時候機器人掛的多了,設(shè)備維修更換中,搞來搞去就不記得ip是什么,用自帶的軟件的確能掃出來,但是這就要開兩個windows環(huán)境下的軟件,耗時耗力,折騰。正好在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)前時間
os = platform.system()判斷當(dāng)前系統(tǒng)類型
output = os.popen()調(diào)用終端,返回值會保存在output中
每次掃描的時長大約是 76 s。
2、運行
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)
運行完會生成一個pingS的可執(zhí)行文件
cp pingS /bin
好了,到這一步,任意地方打開終端輸入:
pingS 1
都可以完成 192.168.1.0~192.168.1.255的掃描
總結(jié)
以上所述是小編給大家介紹的python實現(xiàn)掃描局域網(wǎng)指定網(wǎng)段ip的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
利用Python中SocketServer 實現(xiàn)客戶端與服務(wù)器間非阻塞通信
本文主要介紹了利用Python中SocketServer 實現(xiàn)客戶端與服務(wù)器間非阻塞通信示例代碼,具有很好的參考價值,需要的朋友一起來看下吧2016-12-12
Python實現(xiàn)二叉樹結(jié)構(gòu)與進行二叉樹遍歷的方法詳解
二叉樹是最基本的數(shù)據(jù)結(jié)構(gòu),這里我們在Python中使用類的形式來實現(xiàn)二叉樹并且用內(nèi)置的方法來遍歷二叉樹,下面就讓我們一起來看一下Python實現(xiàn)二叉樹結(jié)構(gòu)與進行二叉樹遍歷的方法詳解2016-05-05
如何用Python和JS實現(xiàn)的Web SSH工具
這篇文章主要介紹了如何用Python和JS實現(xiàn)的Web SSH工具,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Python實現(xiàn)針對給定單鏈表刪除指定節(jié)點的方法
這篇文章主要介紹了Python實現(xiàn)針對給定單鏈表刪除指定節(jié)點的方法,結(jié)合實例形式分析了Python單鏈表的定義、節(jié)點添加、刪除、打印等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04

