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 Django(图文)
Nov 04 Python
Python探索之静态方法和类方法的区别详解
Oct 27 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
django项目搭建与Session使用详解
Oct 10 Python
Pandas 按索引合并数据集的方法
Nov 15 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
Apr 01 Python
python将类似json的数据存储到MySQL中的实例
Jul 12 Python
Python 获取项目根路径的代码
Sep 27 Python
解决Python3下map函数的显示问题
Dec 04 Python
Django:使用filter的pk进行多值查询操作
Jul 15 Python
python基础之while循环语句的使用
Apr 20 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和AJAX创建RSS聚合器的代码
2007/03/13 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
tp5框架前台无限极导航菜单类实现方法分析
2020/03/29 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
如何在PHP中使用数组
2020/06/09 PHP
javascript 新浪背投广告实现代码
2009/07/07 Javascript
javascript使用eval或者new Function进行语法检查
2010/10/16 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
javascript中Function类型详解
2015/04/28 Javascript
Bootstrap精简教程
2015/11/27 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
JavaScript定时器实现的原理分析
2016/12/06 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
关于react中组件通信的几种方式详解
2017/12/10 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
jQuery实现日历效果
2020/09/11 jQuery
python根据京东商品url获取产品价格
2015/08/09 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
Django进阶之CSRF的解决
2018/08/01 Python
在Python中实现字典反转案例
2020/12/05 Python
医学毕业生自荐信
2013/10/11 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
《石榴》教学反思
2014/03/02 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
拖欠货款起诉状
2015/05/20 职场文书
Pytest之测试命名规则的使用
2021/04/16 Python
MySQL GRANT用户授权的实现
2021/06/18 MySQL