python實現掃描局域網指定網段ip的方法

這篇文章主要介紹了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的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章