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

 更新时间:2019年04月16日 10:47:42   作者:水似冰  
这篇文章主要介绍了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的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • 利用Python中SocketServer 实现客户端与服务器间非阻塞通信

    利用Python中SocketServer 实现客户端与服务器间非阻塞通信

    本文主要介绍了利用Python中SocketServer 实现客户端与服务器间非阻塞通信示例代码,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • 详解Python如何实现尾递归优化

    详解Python如何实现尾递归优化

    尾递归是函数返回最后一个操作是递归调用,则该函数是尾递归。本文将介绍Python是如何实现尾递归优化的,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-05-05
  • 如何利用opencv对拍摄图片进行文字识别

    如何利用opencv对拍摄图片进行文字识别

    在有些工程中有时候我们需要对图片文字识别,下面这篇文章主要给大家介绍了关于如何利用opencv对拍摄图片进行文字识别的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • python如何制作英文字典

    python如何制作英文字典

    这篇文章主要为大家详细介绍了python如何制作英文字典,添加单词的意思,查询,退出,建立单词文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python实现二叉树结构与进行二叉树遍历的方法详解

    Python实现二叉树结构与进行二叉树遍历的方法详解

    二叉树是最基本的数据结构,这里我们在Python中使用类的形式来实现二叉树并且用内置的方法来遍历二叉树,下面就让我们一起来看一下Python实现二叉树结构与进行二叉树遍历的方法详解
    2016-05-05
  • python绘制分组对比柱状图

    python绘制分组对比柱状图

    这篇文章主要为大家详细介绍了python绘制分组对比柱状图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 如何用Python和JS实现的Web SSH工具

    如何用Python和JS实现的Web SSH工具

    这篇文章主要介绍了如何用Python和JS实现的Web SSH工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python中移除List重复项的五种方法

    Python中移除List重复项的五种方法

    本文列些处几种去除在Python 列表中(list)可能存在的重复项,这在很多应用程序中都会遇到的需求,本文介绍几种方法,感兴趣的可以了解一下
    2021-05-05
  • Python实现针对给定单链表删除指定节点的方法

    Python实现针对给定单链表删除指定节点的方法

    这篇文章主要介绍了Python实现针对给定单链表删除指定节点的方法,结合实例形式分析了Python单链表的定义、节点添加、删除、打印等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • python重用父类功能的两种方式实例详解

    python重用父类功能的两种方式实例详解

    这篇文章主要介绍了python重用父类功能的两种方式,方式一是跟继承没有关系的,而方式二的super()是依赖于继承的,并且即使没有直接继承关系,super()仍然会按照MRO继续往后查找,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-09-09

最新评论