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的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
浅谈Python实现2种文件复制的方法
Jan 19 Python
python 读取DICOM头文件的实例
May 07 Python
使用Python的Django和layim实现即时通讯的方法
May 25 Python
Python基于OpenCV库Adaboost实现人脸识别功能详解
Aug 25 Python
Python高级特性切片(Slice)操作详解
Sep 27 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
Jul 19 Python
Python正则表达式急速入门(小结)
Dec 16 Python
pytorch 实现cross entropy损失函数计算方式
Jan 02 Python
信号生成及DFT的python实现方式
Feb 25 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 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中全局变量global的使用演示代码
2011/05/18 PHP
在Mac OS上搭建Nginx+PHP+MySQL开发环境的教程
2015/12/21 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
JS 遮照层实现代码
2010/03/31 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
vue.js2.0点击获取自己的属性和jquery方法
2018/02/23 jQuery
JS实现点击按钮可实现编辑功能
2018/07/03 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
详解如何用webpack4从零开始构建react开发环境
2019/01/27 Javascript
vue项目使用.env文件配置全局环境变量的方法
2019/10/24 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
jQuery实现手风琴效果(蒙版)
2020/01/11 jQuery
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
ant design vue中表格指定格式渲染方式
2020/10/28 Javascript
python获取百度热榜链接的实例方法
2020/08/25 Python
什么是Python包的循环导入
2020/09/08 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
Oracle的内存结构(Memory structures)
2015/06/10 面试题
信息总监管理职责范本
2014/03/08 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
学期个人自我总结
2015/02/13 职场文书
暖春观后感
2015/06/08 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python