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之关于类的初步认识
Oct 11 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
浅谈Python中的全局锁(GIL)问题
Jan 11 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
pandas 对group进行聚合的例子
Dec 27 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
Python virtualenv虚拟环境实现过程解析
Apr 18 Python
Python-for循环的内部机制
Jun 12 Python
浅谈python锁与死锁问题
Aug 14 Python
python实现自动打卡的示例代码
Oct 10 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
写好Python代码的几条重要技巧
May 21 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 验证身份证是否合法的函数
2017/02/09 PHP
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
JavaScript中数组去重的5种方法
2020/07/04 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
Python中random模块生成随机数详解
2016/03/10 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python多线程抽象编程模型详解
2019/03/20 Python
Django 多环境配置详解
2019/05/14 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
Python socket处理client连接过程解析
2020/03/18 Python
Python生成器常见问题及解决方案
2020/03/21 Python
Python基于正则表达式实现计算器功能
2020/07/13 Python
基于Python实现体育彩票选号器功能代码实例
2020/09/16 Python
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
什么是反射
2012/03/17 面试题
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
给老师的一封建议书
2014/03/13 职场文书
普通话演讲稿
2014/09/03 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
Python自动化爬取天眼查数据的实现
2021/06/15 Python