Python

NetSentinel:局域网诊断瑞士军刀

NetSentinel 是一个开源的局域网诊断桌面应用,用 Python 写了约 13.6 万行代码,内置 62 个工具,覆盖设备发现、网络监控、故障诊断、安全审计、自动化和教育六大模块。所有数据在本地处理,不需要账号,不传遥测,MIT 协议。

它的定位很明确:替代 Nmap(设备发现/端口扫描)、Wireshark(广播风暴/ARP 监控)、PingPlotter(稳定性日志/断网证据)、Wi-Fi 分析器,以及手动拼凑 ISP 投诉材料的繁琐过程。

核心功能

设备发现

扫描局域网内所有设备,显示 IP、MAC、主机名、厂商、型号和风险等级。支持 ARP + ICMP + TCP SYN + mDNS 并行扫描。还能生成网络拓扑图,扫描 Wi-Fi(隐藏 SSID、 rogue AP、WPS 开启的网络)。

网络监控

  • 实时带宽图表(上传/下载)
  • 设备在线率历史(1h/12h/24h/7d)
  • 后台稳定性记录器:持续 ping/RTT/抖动/DNS 日志,导出 CSV 作为断网证据
  • 每设备流量统计(需要 Npcap/libpcap)
  • IoT 设备行为基线:学习正常流量模式,异常时告警

故障诊断

  • “What’s Wrong?” 一键排查:自动跑 DNS、风暴、STP、ISP 检查,按可能性排序
  • 根因关联器:逐跳 ping 链,定位丢包从哪一跳开始,给出结论(是你路由器还是 ISP 的问题)
  • 服务诊断:对任意主机做 DNS/TCP/HTTPS/ICMP/traceroute 探测,分类故障层级
  • DNS 基准测试:对比系统 DNS 和 Cloudflare/Google/Quad9,含 DNS 泄漏测试
  • 测速:三级引擎(Ookla CLI → speedtest-cli → 纯 Python 兜底)

安全审计

  • SYN 半开端口扫描
  • OS 指纹识别
  • CVE 查询:关联 NVD 数据库
  • TLS 证书监控:每小时检查,30 天到期预警
  • 凭据测试:检查 SSH/SMB/FTP/Telnet 弱口令
  • ARP 欺骗监控:实时检测 IP-MAC 冲突
  • 恶意 DHCP 服务器检测

二层网络检测

  • STP 根桥检测:捕获 BPDU,识别哪个设备抢了根桥角色(常见于 Google Nest 等设备导致每 30-45 秒断网)
  • 广播风暴检测:测量洪泛级别,定位源设备

自动化与集成

  • 只读 REST API(127.0.0.1:8765)
  • MQTT / Home Assistant 集成
  • Shell hooks:设备离线、高 RTT、新设备上线时触发命令
  • 内置 10 个硬件插件:TP-Link Deco、UniFi、FRITZ!Box、MikroTik、OpenWrt、Netgear、ASUS、Synology 等

ISP 投诉报告

这是 NetSentinel 比较实用的功能。网络不稳定时,ISP 客服通常让你"重启路由器试试"。NetSentinel 的 ISP Accountability Report 会生成一个独立 HTML 文件,包含:

  • 逐跳 traceroute 表
  • 各跳丢包率
  • DNS 延迟
  • 带时间戳的断网日志

直接发给客服,有据可查。

pip-audit:Python 依赖安全扫描工具

pip-audit 是 PyPA(Python Packaging Authority)维护的依赖安全扫描工具,用于检查 Python 环境和依赖文件中是否存在已知漏洞。数据来源是 Python Packaging Advisory Database,通过 PyPI JSON API 或 OSV 查询。

和 npm audit 类似,但 pip 本身没有内置 audit 功能,pip-audit 填补了这个空缺。

安装

pip install pip-audit

需要 Python 3.10+。也支持 conda 安装:

conda install -c conda-forge pip-audit

基本用法

扫描当前环境

pip-audit

直接扫描当前虚拟环境中安装的所有包,输出有漏洞的包及 CVE 编号。

扫描 requirements 文件

pip-audit -r requirements.txt

扫描项目路径

pip-audit /path/to/project

会自动识别项目中的依赖文件(requirements.txt、pyproject.toml、setup.cfg 等)。

扫描 lock 文件

pip-audit --locked /path/to/project

Netmiko:Python多厂商网络设备SSH自动化库

Netmiko 是一个基于 Paramiko 的 Python 库,专门用于简化网络设备的 SSH 管理。它支持 Cisco、Juniper、Arista、HP、华为、Fortinet 等 100+ 平台,提供统一的 API 接口,让网络工程师可以用一套代码管理不同厂商的设备。

安装

pip install netmiko

基本用法

建立 SSH 连接

from netmiko import ConnectHandler

device = {
    'device_type': 'cisco_xe',
    'host': '192.168.1.1',
    'username': 'admin',
    'password': 'password',
}

net_connect = ConnectHandler(**device)
print(net_connect.find_prompt())  # 输出: cisco5#

device_type 指定设备厂商和型号,常见值包括:

device_type厂商/平台
cisco_iosCisco IOS
cisco_xeCisco IOS XE
cisco_nxosCisco NX-OS
juniper_junosJuniper JunOS
arista_eosArista EOS
huawei华为
hp_comwareH3C Comware
fortinetFortinet

执行 show 命令

output = net_connect.send_command('show ip arp')
print(output)

Netmiko 会自动处理输出分页(terminal length 0),并去除命令回显和提示符,只返回纯净的命令输出。

对于耗时较长的命令,可以指定超时时间:

output = net_connect.send_command('show tech-support', delay_factor=5, max_loops=500)

执行配置命令

config_commands = [
    'interface GigabitEthernet0/1',
    'description Uplink-to-Core',
    'ip address 10.0.0.1 255.255.255.0',
    'no shutdown',
]

output = net_connect.send_config_set(config_commands)
print(output)

# 保存配置
net_connect.save_config()

send_config_set() 会自动进入配置模式、逐条执行命令、退出配置模式。

批量管理多台设备

from netmiko import ConnectHandler

devices = [
    {'device_type': 'cisco_xe', 'host': '192.168.1.1', 'username': 'admin', 'password': 'pass1'},
    {'device_type': 'cisco_xe', 'host': '192.168.1.2', 'username': 'admin', 'password': 'pass2'},
    {'device_type': 'cisco_xe', 'host': '192.168.1.3', 'username': 'admin', 'password': 'pass3'},
]

for device in devices:
    try:
        conn = ConnectHandler(**device)
        output = conn.send_command('show version')
        print(f'{device["host"]}: {output[:100]}...')
        conn.disconnect()
    except Exception as e:
        print(f'{device["host"]}: 连接失败 - {e}')

使用 Python 通过 ISAPI 读取海康威视摄像头设备信息

海康威视(Hikvision)摄像头提供了一套基于 HTTP 的 ISAPI(Intelligent Security API)接口,可以方便地通过程序读取设备信息、配置参数等。本文介绍如何用 Python 通过 ISAPI 接口读取海康摄像头的设备信息。

ISAPI 简介

ISAPI 是海康威视定义的一套 RESTful 风格接口,运行在摄像头的 Web 服务(默认端口 80/443)上。接口路径通常以 /ISAPI/ 开头,请求和响应使用 XML 格式。常见的设备信息接口包括:

接口路径说明
/ISAPI/System/deviceInfo获取设备基本信息(型号、序列号、固件版本等)
/ISAPI/System/status获取设备运行状态(在线时间、CPU/内存使用率等)
/ISAPI/System/Network/interfaces获取网络接口信息(IP、MAC 等)