本文目录导读:

我来帮你编写监控风扇转速的脚本,根据不同操作系统,这里提供几种方案:
Linux 系统
使用 lm-sensors(推荐)
#!/bin/bash
# fan_monitor.sh - 监控风扇转速
# 安装依赖(如果需要)
# sudo apt-get install lm-sensors
# sudo sensors-detect
# 风扇速度阈值
FAN_THRESHOLD=500 # RPM
while true; do
# 获取风扇转速
fan_speed=$(sensors | grep -i "fan" | awk '{print $2}' | head -1)
# 检查是否为空
if [ -z "$fan_speed" ]; then
echo "无法获取风扇信息"
else
echo "当前风扇转速: ${fan_speed} RPM"
# 检查是否低于阈值
if [ "$fan_speed" -lt "$FAN_THRESHOLD" ] 2>/dev/null; then
echo "警告: 风扇转速过低!"
# 可以在这里添加发送警报的代码
fi
fi
sleep 5
done
读取 /sys/class 接口
#!/bin/bash
# fan_monitor_sys.sh
# 查找所有风扇设备
for fan in /sys/class/hwmon/hwmon*/fan*_input; do
if [ -f "$fan" ]; then
speed=$(cat "$fan")
name=$(echo "$fan" | grep -oP 'hwmon\d+/fan\d+')
echo "$name: ${speed} RPM"
fi
done
# 持续监控
while true; do
clear
echo "=== 风扇监控 ==="
echo "时间: $(date)"
echo ""
for fan in /sys/class/hwmon/hwmon*/fan*_input; do
if [ -f "$fan" ]; then
speed=$(cat "$fan")
name=$(echo "$fan" | grep -oP 'fan\d+')
echo "风扇 $name: ${speed} RPM"
fi
done
sleep 2
done
Windows 系统
PowerShell 脚本
# fan_monitor.ps1
# 使用WMI获取风扇信息
function Get-FanSpeed {
try {
# 获取风扇信息
$fans = Get-WmiObject -Namespace "root\wmi" -Class "FanSpeed" -ErrorAction Stop
if ($fans) {
foreach ($fan in $fans) {
$speed = $fan.CurrentSpeed
Write-Host "风扇 $($fan.InstanceName): ${speed} RPM"
# 阈值检查
if ($speed -lt 500) {
Write-Host "警告: 风扇转速过低!" -ForegroundColor Red
}
}
} else {
Write-Host "未检测到风扇信息"
}
}
catch {
Write-Host "无法访问风扇信息: $($_.Exception.Message)"
}
}
# 持续监控
while ($true) {
Clear-Host
Write-Host "=== 风扇监控 ==="
Write-Host "时间: $(Get-Date)"
Write-Host ""
Get-FanSpeed
Start-Sleep -Seconds 5
}
使用 SpeedFan 命令行工具
@echo off
REM fan_monitor.bat
REM 需要先安装 SpeedFan:https://www.almico.com/speedfan.php
:loop
cls
echo === 风扇监控 ===
echo 时间: %date% %time%
echo.
REM 使用 SpeedFan 命令行
speedfan /s
REM 或者读取日志文件
if exist "C:\Program Files (x86)\SpeedFan\sf_log.csv" (
type "C:\Program Files (x86)\SpeedFan\sf_log.csv" | findstr "FAN"
)
ping -n 5 127.0.0.1 > nul
goto loop
跨平台 Python 脚本
#!/usr/bin/env python3
# fan_monitor.py
import platform
import subprocess
import time
import re
def get_linux_fan_speed():
"""Linux系统获取风扇转速"""
try:
# 使用sensors命令
result = subprocess.run(['sensors'], capture_output=True, text=True)
if result.returncode == 0:
fans = []
for line in result.stdout.split('\n'):
if 'fan' in line.lower():
match = re.search(r'(\d+)\s*RPM', line)
if match:
fans.append(int(match.group(1)))
return fans
except:
pass
return []
def get_windows_fan_speed():
"""Windows系统获取风扇转速"""
try:
import wmi
c = wmi.WMI(namespace="root\\wmi")
fans = []
for fan in c.FanSpeed():
fans.append(fan.CurrentSpeed)
return fans
except:
pass
return []
def main():
"""主监控函数"""
system = platform.system().lower()
print(f"风扇监控 - 运行在 {system}")
print("=" * 40)
while True:
if system == 'linux':
fan_speeds = get_linux_fan_speed()
elif system == 'windows':
fan_speeds = get_windows_fan_speed()
else:
print("不支持的操作系统")
break
if fan_speeds:
for i, speed in enumerate(fan_speeds):
print(f"风扇 {i+1}: {speed} RPM")
# 阈值报警
if speed < 500:
print(f"⚠ 警告: 风扇 {i+1} 转速过低!")
else:
print("无法获取风扇信息")
print("-" * 40)
time.sleep(5)
if __name__ == "__main__":
main()
高级功能脚本
带日志记录和报警的完整脚本
#!/bin/bash
# fan_monitor_complete.sh
# 配置
LOG_FILE="/var/log/fan_monitor.log"
THRESHOLD=500
ALERT_EMAIL="admin@example.com"
# 初始化日志
init_log() {
touch "$LOG_FILE"
echo "===== 风扇监控日志 - $(date) =====" >> "$LOG_FILE"
}
# 记录日志
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# 发送警报
send_alert() {
local message="$1"
echo "$message" | mail -s "风扇转速警报" "$ALERT_EMAIL"
}
# 监控函数
monitor_fans() {
while true; do
# 获取风扇信息
sensors_output=$(sensors 2>/dev/null)
if [ $? -ne 0 ]; then
log "错误: 无法运行sensors命令"
sleep 10
continue
fi
# 解析风扇信息
echo "$sensors_output" | grep -i "fan" | while read line; do
speed=$(echo "$line" | grep -oP '\d+' | head -1)
name=$(echo "$line" | awk -F: '{print $1}')
if [ -n "$speed" ]; then
log "风扇 $name: ${speed} RPM"
# 检查阈值
if [ "$speed" -lt "$THRESHOLD" ]; then
log "警告: 风扇 $name 转速过低! (${speed} < ${THRESHOLD})"
send_alert "风扇 $name 转速过低! 当前: ${speed} RPM"
fi
fi
done
sleep 5
done
}
# 主函数
main() {
# 检查权限
if [ "$(id -u)" -ne 0 ]; then
echo "请以root用户运行此脚本"
exit 1
fi
# 初始化
init_log
log "开始监控风扇"
# 处理信号
trap "log '监控停止'; exit 0" SIGINT SIGTERM
# 启动监控
monitor_fans
}
main
使用说明
安装依赖
Linux:
# Ubuntu/Debian sudo apt-get install lm-sensors sudo sensors-detect # CentOS/RHEL sudo yum install lm_sensors sudo sensors-detect
Windows:
- 需要管理员权限运行PowerShell
- 可能需要安装SpeedFan
运行脚本
# Linux chmod +x fan_monitor.sh ./fan_monitor.sh # Python版本 python3 fan_monitor.py # Windows PowerShell Set-ExecutionPolicy RemoteSigned .\fan_monitor.ps1
选择适合你系统的版本,必要时调整阈值和告警设置。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播