首页 > 编程语言 >python 查看内网所有设备的ip

python 查看内网所有设备的ip

时间:2024-12-13 20:32:54浏览次数:11  
标签:network 查看 scan python ip range hosts log

作为一个网工我们要知道内网有多少设备连接和ip,我们可以通过python脚本简单的完成。

这里我的python环境为python 3.13

下图是一个大概的运行成果

以下是整个代码复制即用。

import os
import subprocess
import platform
import threading
import time
from concurrent.futures import ThreadPoolExecutor, as_completed

# 检查主机是否在线
def ping(host):
    # 检测当前操作系统,并选择合适的ping命令
    param = '-n' if platform.system().lower() == 'windows' else '-c'
    command = ['ping', param, '1', '-w', '1000', host]  # '-w 1000'设置超时为1秒
    result = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    return result.returncode == 0  # 返回True代表主机在线

# 执行网络扫描
def scan_network(network_range, start_ip, end_ip, max_threads=32):
    online_hosts = []
    offline_hosts = []
    
    # 在给定的IP范围内扫描
    def scan_ip(ip):
        if ping(ip):
            online_hosts.append(ip)
        else:
            offline_hosts.append(ip)

    # 使用ThreadPoolExecutor来管理线程池
    with ThreadPoolExecutor(max_workers=max_threads) as executor:
        futures = []
        for i in range(start_ip, end_ip + 1):
            ip = f"{network_range}.{i}"
            futures.append(executor.submit(scan_ip, ip))
        
        # 等待所有任务完成
        for future in as_completed(futures):
            pass
    
    return online_hosts, offline_hosts

# 记录扫描结果到日志
def log_results(online_hosts, offline_hosts):
    with open("network_scan_results.log", "a") as log_file:
        log_file.write(f"Network Scan Results - {time.strftime('%Y-%m-%d %H:%M:%S')}\n")
        log_file.write("Online Hosts:\n")
        for host in online_hosts:
            log_file.write(f"{host}\n")
        log_file.write("Offline Hosts:\n")
        for host in offline_hosts:
            log_file.write(f"{host}\n")
        log_file.write("\n")

if __name__ == "__main__":
    network_range = "192.168.1"  # 网段
    start_ip = 1                 # 扫描的起始IP
    end_ip = 254                 # 扫描的结束IP
    
    print(f"开始扫描 {network_range}.{start_ip} 到 {network_range}.{end_ip}...")
    
    online_hosts, offline_hosts = scan_network(network_range, start_ip, end_ip)
    
    log_results(online_hosts, offline_hosts)
    
    print("网络扫描完成,结果已记录到 network_scan_results.log 文件中。")

配置扫描网段和IP范围

  • 修改脚本中的network_range、来自定义start_ipend_ip,需要扫描的网段和IP范围。
    • network_range:例如"192.168.16",表示您要扫描的网段延伸。
    • start_ipend_ip:指定要扫描的IP范围。例如,start_ip = 1end_ip = 254表示扫描192.168.16.1192.168.16.254的所有IP地址。

执行脚本

直接复制保存为ping_network_scan.py

用powershell运行

python ping_network_scan.py

查看结果会在同文件夹下生成一个叫 network_scan_results.log 的文件

结果表明有两个主机在线

标签:network,查看,scan,python,ip,range,hosts,log
From: https://blog.csdn.net/2402_86725606/article/details/144384451

相关文章

  • python毕设 露营商城系统论文+程序
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于露营商城系统的研究,现有研究多集中于传统商城系统的构建与运营,或者特定商品类型商城系统的部分功能优化,如电商巨头的综合商城系统......
  • python 脚本实现监视文件变化 网工
    在某些特别的情况下一些重要文件的改变、变化我们需要进行时刻的检测importtimefromwatchdog.observersimportObserverfromwatchdog.eventsimportFileSystemEventHandler#定义一个事件处理器classWatcherHandler(FileSystemEventHandler):defon_modified......
  • C#调用Python脚本的方式(一),以PaddleOCR-GUI为例
    前言每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个WebApi进行调用,如果只是一个简单的脚本而且不需要频繁调用,那......
  • 基于Python的日志数据可视化分析系统
    收藏关注不迷路!!......
  • C#调用Python脚本的方式(一),以PaddleOCR-GUI为例
    前言每种语言都有每种语言的优势,Python由于其强大的生态,很多任务通过调用包就可以实现,那么学会从C#项目中调用Python脚本完成任务就很重要。C#调用Python代码有多种方式,如果Python那边内容比较多,可以考虑起一个WebApi进行调用,如果只是一个简单的脚本而且不需要频繁调用,那么可以......
  • Windows 与 Linux 下 Ping IPv6 地址 | 常用网络命令
    注:本文为网络命令相关文章合辑。未整理去重。一、IPv6概述IPv6即“Internet协议版本6”,因IPv4地址资源面临耗尽问题而被引入以替代IPv4。IPv6则提供了理论上多达2128......
  • Python开发一个Instant Messaging(IM)(即时通讯)聊天工具:从理论到实践
    一、引言在现代社会中,即时通讯工具已经成为人们日常沟通的重要工具。开发一个IM聊天工具不仅能够提高我们的编程技能,还能让我们更好地理解即时通讯系统的原理。本文将详细介绍如何开发一个简单的IM聊天工具,包括开发思想、开发流程以及详细的代码示例。二、开发思想开发一个IM聊......
  • python毕设 居家养老服务管理系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于居家养老服务管理系统的研究,现有研究主要以居家养老的模式、服务内容等方面为主,专门针对利用Python开发居家养老服务管理系统的研......
  • 利用Python语言编写和调试一个识别手写数字\文字图像的深度前馈网络
    利用Python语言编写和调试一个识别手写数字\文字图像的深度前馈网络,包括数据预处理、网络模型构建、模型参数初始化和正向推理、反向梯度下降参数寻优,以及实现模型预测的功能。这是一个很经典的,也是机器学习里面基础的内容,这个内容的实现,可以帮助我们更加深刻的理解机机器学......
  • Python学习第二天
    第一课一、使用print函数进行简单的输出print(输出内容)二、今天认识了ASCII码几个常见字母的ASCII码大小:“A”为65;“a”为97;“0”为48依次递进。print(cht(65)),cht调取ASCII码。三、中文编码的范围是:“u4e00-u9fa5”中文的调取:print(ord('内'))print(ord('务'))2086......