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 文件和路径操作函数小结
Nov 23 Python
基于Python的身份证号码自动生成程序
Aug 15 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
Python解析、提取url关键字的实例详解
Dec 17 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
Python递归函数实例讲解
Feb 27 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
python并发编程多进程之守护进程原理解析
Aug 20 Python
使用Python-OpenCV消除图像中孤立的小区域操作
Jul 05 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 Python
pytorch fine-tune 预训练的模型操作
Jun 03 Python
用Python爬取某乎手机APP数据
Jun 15 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
写一个用户在线显示的程序
2006/10/09 PHP
php smarty模版引擎中的缓存应用
2009/12/02 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
PHP中判断文件存在使用is_file还是file_exists?
2015/04/03 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
Redis构建分布式锁
2017/03/28 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
jquery中EasyUI实现同步树
2015/03/01 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
浅析jQuery操作select控件的取值和设值
2016/12/07 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
Vue 项目分环境打包的方法示例
2018/08/03 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
python实现一组典型数据格式转换
2018/12/15 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
如何运行带参数的python脚本
2019/11/15 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
白酒市场营销方案
2014/02/25 职场文书
银行转正自我鉴定
2014/09/29 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2015年环境整治工作总结
2015/05/22 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android