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


Posted in Python onApril 16, 2019

一、问题由来

工作的局域网中,会接入很多设备,机器人上的网络设备就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 相关文章推荐
Python 解析XML文件
Apr 15 Python
python对数组进行反转的方法
May 20 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
Dec 12 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
Python 3 判断2个字典相同
Aug 06 Python
Python的几种主动结束程序方式
Nov 22 Python
pycharm 更改创建文件默认路径的操作
Feb 15 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
Jul 14 Python
python属于哪种语言
Aug 16 Python
yolov5返回坐标的方法实例
Mar 17 Python
python实现扫描ip地址的小程序
Apr 16 #Python
使用Python制作简单的小程序IP查看器功能
Apr 16 #Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 #Python
Python这样操作能存储100多万行的xlsx文件
Apr 16 #Python
Python字符串内置函数功能与用法总结
Apr 16 #Python
python3实现字符串操作的实例代码
Apr 16 #Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 #Python
You might like
PHP在Web开发领域的优势
2006/10/09 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
thinkphp5实现无限级分类
2019/02/18 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
广告显示判断
2006/08/31 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
JS实现页面打印功能
2017/03/16 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
Vue toFixed保留两位小数的3种方式
2020/10/23 Javascript
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
Python函数中的可变长参数详解
2019/09/12 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
python对execl 处理操作代码
2020/06/22 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
2014年四风问题自我剖析材料
2014/09/15 职场文书
高中生学习计划书
2014/09/15 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
党员证明信
2015/06/19 职场文书
2016新教师培训心得体会范文
2016/01/08 职场文书
Java使用JMeter进行高并发测试
2021/11/23 Java/Android