溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何實現(xiàn)掃描局域網指定網段ip

發(fā)布時間:2021-04-07 10:37:37 來源:億速云 閱讀:587 作者:小新 欄目:開發(fā)技術

這篇文章給大家分享的是有關python如何實現(xiàn)掃描局域網指定網段ip的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、問題由來

工作的局域網中,會接入很多設備,機器人上的網絡設備就2個了,一個巨哥紅外,一個??悼梢姽狻C器人還有自身的ip。

有時候機器人掛的多了,設備維修更換中,搞來搞去就不記得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吧,于是就在網上抄抄改改。

二、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()判斷當前系統(tǒng)類型

output = os.popen()調用終端,返回值會保存在output中

每次掃描的時長大約是 76 s。

2、運行

python3 pingS.py 1

參數(shù)1是指定網段,如果想掃描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的掃描

感謝各位的閱讀!關于“python如何實現(xiàn)掃描局域網指定網段ip”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI