记录在B站学习的知识
利用ping原理,通过编写python脚本,来检测局域网内某个主机是否在线或检测局域网网段内在线的主机

实验环境

  • ubuntu虚拟机
  • pycharm

准备工作

  • 了解ping原理
    PING(Packet Internet Groper),因特网包搜索器,用于测试网络连接量的程序。Ping是工作在TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的主机发送ICMP(Iternet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。(百度百科)
  • 安装 ipaddress 模块
    ipaddress 是一个用于检查和操作IP地址的模块,在这个脚本中只是用于迭代生成局域网内的的IP地址,可以用上篇 【python脚本——主机发现】 介绍ARP的那种方法来生成(比较麻烦)。
    在终端用 pip install ipaddress 进行安装

代码展示

from __future__ import unicode_literals
import ipaddress
import multiprocessingfrom scapy.layers.inet import IP,ICMP
from scapy.sendrecv import sr1SUCCESS=100001
FAILURE=100002def ping(target_ip):package=IP(dst=target_ip)/ICMP()/b'hello'        #ICMP封装在IP包中result=sr1(package,timeout=3,verbose=False)      #发送数据包if result:return target_ip,SUCCESSelse:return target_ip,FAILURE#生成局域网内的IP地址
def get_ip_list(ip):temp = ipaddress.ip_network(ip,False).hosts()ip_lists=[]for item in temp:ip_lists.append(str(item))return ip_listsdef do_scan(target_ip,thread_num):print('Please Wait......')ip_list=get_ip_list(target_ip)pool=multiprocessing.Pool(processes=int(thread_num)) #进程池result=pool.map(ping,ip_list)pool.close()  #关闭进程池pool.join()       #阻塞等待for ip,res in result:if res==SUCCESS:print('%-20s%-20s'%(ip,"Success"))if __name__ == '__main__':print('Select the sequence number to operate on:    1)specific IP   2)A network segment')selection = input('input the sequence:')if selection=='1':        #选择检测一个特定的IPip = input('the specific ip:')res = ping(ip)[1]if res==SUCCESS:print('%-20s%-20s'%(ip,"Success"))else:print('%-20s%-20s'%(ip,"Failure"))elif selection=='2':  #选择检测一个局域网网段segment = input('a network segment:')do_scan(segment,64)else:print('the number you input is invalid')

结果显示

  • 检测一个特定的IP
  • 检测一个指定的网段

注意的点

  • wireshark抓 ICMP 包演示



    可以看到一来一回的ICMP包
  • 对于能扫描到的范围
    该脚本扫描的是局域网内的主机IP,而且如果扫描的是本机的IP,会显示”Failure“,即该脚本通过扫描发出的数据包是经过本机网卡的,所以如果输入的是主机所在的网段,则返回显示的会是除主机以外在线的主机IP。

python脚本——ping检测在线主机相关推荐

  1. python——脚本实现检测目标ip是否存在ftp笑脸漏洞(ftp后门漏洞)

    警告 请勿使用本文提到的内容违反法律. 本文不提供任何担保 一.漏洞介绍 vsftpd2.3.4中在6200端口存在一个shell,使得任何人都可以进行连接,并且VSFTPD v2.3.4 服务,是以 ...

  2. shell脚本ping检测服务器连通性

    shell脚本如下,执行脚本后,会将ping检测结果输出到一个ping_monitor.log日志文件中,脚本接收一个参数,即要检测的ip地址 #!/bin/sh MONITOR_LOG=/home/ ...

  3. BAT脚本: ping检测网络稳定性 与 取命令结果的指定行方法 与 将变量内容追加写入txt文件方法

    ping检测稳定性脚本 @echo off set filePath=D:/pingRecord.csv set ping_url=www.baidu.com set sleep_times=5 :t ...

  4. shell 实现ping检测存活主机(多进程后台实现)

    由于shell脚本没有多线程可以用,所以只能利用多进程的方法来提速了,后期会用高级语言编写, 下面介绍我的代码 用到的知识点: bash ./a.sh 和 .  ./a.sh 和 source ./a ...

  5. python脚本,检测域名是否被注册

    Python批量检测Url是否已注册(抓域名,抢域名小工具,还在开发中) 感觉垃圾的一批,想放弃了,整出来也没什么用,目前多线程已经开发完毕,每秒提交200次 环境是Python3.7 有些库是不用的 ...

  6. python白名单验证-python脚本简单检测ip合法性并添加到白名单文件

    一.功能说明 有时候项目需要通过ip地址来判定是否允许访问,通常通过一个白名单地址文件来存放这些允许放行的ip,但每次打开文件编辑比较麻烦,容易出错,也不知道是否添加过,故用python写了一个自动添 ...

  7. shell脚本判断在线主机

    批量检测在线主机,运行效果 vim check_ip.sh #!/bin/bash . /etc/init.d/functions ip=192.168.31. for i in {1..100} d ...

  8. python脚本案例-python脚本范例

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. [伯乐在线导读]:有网友在 quora 上提问,「你用 python 写 ...

  9. 脚本自动ping检测网络情况

    在一个实际的集群中,可能有几十上百台服务器,每次自己检测集群健康状态时,一台服务器一台服务器检测,一个字母一个字母敲,我都累成狗 .鉴于此,写了一个小脚本,自动跑ping,减轻工作量,呀吼吼,爽歪歪. ...

最新文章

  1. 集合处理后,按原先输入的字符串顺序排序
  2. 集成学习Bagging和Boosting算法总结
  3. 谷歌程序员少输一个“”,差点让全球Chrome笔记本变砖
  4. 初学flex时候搞得一个大头贴工具(开源)
  5. php手工注入语句,PHP+MySQL 手工注入语句大全
  6. dataframe 众数的方法_数据分析师最常用的数据分析方法。你都掌握了吗?
  7. Javascript设计模式
  8. 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射
  9. queue模块的使用
  10. mysql ubuntu 注意点
  11. 微信小程序生成小程序码,如何在开发版本调试?
  12. 如何才能学好javascript
  13. 从入门到入土:Python实现爬取刷新微博推荐和最新好友微博|cookie调用|模拟登录
  14. 20211028:DC综合时的内部时钟处理
  15. [转] openssl dgst命令完成SHA256哈希校验和RSA数字签名
  16. error: ignoring return value of 编译错误处理
  17. CSDN Markdown 图片排版显示
  18. 使用yum命令创建缓存时报错:Peer cert cannot be verified or peer cert invalid
  19. (三)JMockit API:@Mocked -基础篇
  20. ​为什么用Go编写机器学习的基础架构,而不是Python?

热门文章

  1. android 让app全屏显示,Android app设置全屏模式
  2. Java爬虫 爬取英雄联盟英雄的皮肤图片到本地
  3. Shell脚本常见问题
  4. 全球及中国车载定位模块行业发展格局与运营动向分析报告2022版
  5. 在图片上的文字背景,颜色是黑色?
  6. C语言斐波那切数列数列求和
  7. Excel导入CSV文件(解决数值转换文本问题)
  8. 微信公众号图文编辑新手教程
  9. 必学技术java Swing之随心所欲添加自定义位置和大小的组件(建议收藏)
  10. 2020款苹果iPad Pro将搭载3D感应后置摄像头