python实现扫描局域网指定网段ip的方法

作者:水似冰 时间:2023-09-28 16:44:45 

一、问题由来

工作的局域网中,会接入很多设备,机器人上的网络设备就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的方法,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://blog.csdn.net/qq_30650153/article/details/82289785

标签:python,扫描,局域网,ip
0
投稿

猜你喜欢

  • 页面无刷新调用数据(IFRAME+js)

    2009-06-01 11:29:00
  • Python中的函数式编程:不可变的数据结构

    2023-09-05 07:16:35
  • 将HTML自动转为JS代码

    2010-03-17 20:49:00
  • Python高级架构模式知识点总结

    2023-12-19 14:36:47
  • Python Pandas中布尔索引的用法详解

    2023-11-04 08:37:45
  • 解析arp病毒背后利用的Javascript技术

    2007-08-08 09:55:00
  • python 解决flask 图片在线浏览或者直接下载的问题

    2022-05-15 06:24:57
  • ASP技巧 挂QQ的网页源代码ASP/PHP

    2009-01-05 12:36:00
  • MySQL Order By Rand()效率

    2011-01-04 19:34:00
  • vue一步到位的实现动态路由

    2024-05-21 10:16:05
  • php 一维数组的循环遍历实现代码

    2023-06-12 00:49:04
  • python中无法导入本地安装好的第三方库问题

    2022-06-25 12:24:31
  • Python GUI编程 文本弹窗的实例

    2022-08-24 02:07:48
  • MySQL 如何修改root用户的密码

    2024-01-23 19:34:31
  • Python获取运行目录与当前脚本目录的方法

    2023-12-19 13:17:59
  • Python简单生成随机数的方法示例

    2021-01-21 02:30:37
  • python实现简单温度转换的方法

    2021-04-12 10:14:51
  • python求绝对值的三种方法小结

    2023-04-17 19:57:09
  • Linux添加Python path方法及修改环境变量的三种方法

    2021-03-26 12:22:45
  • Python 实现自动完成A4标签排版打印功能

    2021-07-14 22:55:15
  • asp之家 网络编程 m.aspxhome.com