V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  gohub  ›  全部回复第 1 页 / 共 1 页
回复总数  2
要开启 SNMP (简单网络管理协议)并编写一个使用 BAT 脚本监控电脑性能的方案,可以按照以下步骤进行:

1. 启用 SNMP 服务
在 Windows 上启用 SNMP 服务:

启用 SNMP 服务:

打开“控制面板” > “程序” > “启用或关闭 Windows 功能”。
在“功能”列表中,找到并勾选“简单网络管理协议 (SNMP)”。
点击“确定”以安装和启用 SNMP 服务。
配置 SNMP 服务:

打开“服务管理器”(按 Win + R ,输入 services.msc )。
找到“SNMP 服务”,右键选择“属性”。
在“安全”选项卡下,添加一个社区字符串,并设置相应的权限。
在“代理”选项卡下,可以配置联系信息。
启动 SNMP 服务,并设置启动类型为“自动”。
2. 编写 BAT 脚本进行 SNMP 监控
以下是一个示例 BAT 脚本,用于通过 SNMP 获取并记录 CPU 使用率和内存使用情况。脚本将使用 Windows 内置的 snmpget 命令来获取这些性能数据。

bat
复制代码
@echo off
setlocal

REM 配置 SNMP 相关信息
set SNMP_HOST=localhost
set SNMP_COMMUNITY=public

REM 配置监控的 OID
set OID_CPU=.1.3.6.1.2.1.25.3.3.1.2.1
set OID_MEM_TOTAL=.1.3.6.1.4.1.2021.4.5.0
set OID_MEM_FREE=.1.3.6.1.4.1.2021.4.6.0

REM 输出文件
set OUTPUT_FILE=snmp_monitor.log

:LOOP
REM 获取 CPU 使用率
for /f "tokens=4" %%a in ('snmpget -v 2c -c %SNMP_COMMUNITY% %SNMP_HOST% %OID_CPU%') do set CPU_USAGE=%%a

REM 获取总内存和可用内存
for /f "tokens=4" %%a in ('snmpget -v 2c -c %SNMP_COMMUNITY% %SNMP_HOST% %OID_MEM_TOTAL%') do set MEM_TOTAL=%%a
for /f "tokens=4" %%a in ('snmpget -v 2c -c %SNMP_COMMUNITY% %SNMP_HOST% %OID_MEM_FREE%') do set MEM_FREE=%%a

REM 计算内存使用率
set /a MEM_USED=%MEM_TOTAL%-%MEM_FREE%
set /a MEM_USAGE=(%MEM_USED%*100)/%MEM_TOTAL%

REM 获取当前时间
for /f %%a in ('echo %time%') do set TIME=%%a

REM 记录到日志文件
echo %DATE% %TIME% - CPU: %CPU_USAGE%%, Memory: %MEM_USAGE%%% >> %OUTPUT_FILE%

REM 休眠 60 秒
timeout /t 60 > nul
goto LOOP
3. 执行脚本
将上述脚本保存为 .bat 文件,例如 snmp_monitor.bat 。
双击该文件运行脚本。
监控数据会持续写入 snmp_monitor.log 文件中。
4. 查看日志
日志文件 snmp_monitor.log 会记录每一分钟的 CPU 和内存使用情况。
你可以打开该文件查看历史性能数据。
这个脚本通过 SNMP 获取本地计算机的 CPU 和内存使用率,并将其记录到日志文件中。你可以根据需求修改 OID 来监控其他性能指标。
谢谢 gpt
电脑开启 snmp ,bat 做一个 snmp 监控,记录下 cpu ,内存磁盘使用
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1024 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 21:03 · PVG 05:03 · LAX 13:03 · JFK 16:03
Developed with CodeLauncher
♥ Do have faith in what you're doing.