本文目录导读:

我来介绍几种生成系统报告的方法,包含不同场景的脚本方案:
Linux 系统报告脚本
基础系统信息报告
#!/bin/bash
# system_report.sh - 生成系统基础信息报告
REPORT_FILE="system_report_$(date +%Y%m%d_%H%M%S).txt"
{
echo "========================================"
echo " 系统报告 - $(date)"
echo "========================================"
# 系统信息
echo -e "\n【系统信息】"
echo "主机名: $(hostname)"
echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d'"' -f2)"
echo "内核版本: $(uname -r)"
echo "运行时间: $(uptime -p)"
# 硬件信息
echo -e "\n【硬件信息】"
echo "CPU型号: $(lscpu | grep 'Model name' | cut -d':' -f2 | xargs)"
echo "CPU核心数: $(nproc)"
echo "内存总量: $(free -h | awk '/^Mem:/ {print $2}')"
echo "磁盘使用: $(df -h / | awk 'NR==2 {print $3"/"$2" ("$5")"}')"
# 网络信息
echo -e "\n【网络信息】"
echo "IP地址: $(hostname -I)"
echo "网关: $(ip route | grep default | awk '{print $3}')"
echo "DNS: $(cat /etc/resolv.conf | grep nameserver | awk '{print $2}' | tr '\n' ' ')"
# 系统负载
echo -e "\n【系统负载】"
echo "1分钟负载: $(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f1)"
echo "5分钟负载: $(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f2)"
echo "15分钟负载: $(uptime | awk -F'load average:' '{print $2}' | cut -d',' -f3)"
# 进程信息
echo -e "\n【进程信息】"
echo "总进程数: $(ps aux | wc -l)"
echo "CPU占用TOP5:"
ps aux --sort=-%cpu | head -6 | awk '{printf " %-10s %-8s %s\n", $1, $3"%", $11}'
# 服务状态
echo -e "\n【关键服务状态】"
for service in sshd nginx mysql docker; do
if systemctl is-active $service 2>/dev/null | grep -q active; then
echo " $service: 运行中"
else
echo " $service: 未运行"
fi
done
echo -e "\n========================================"
echo "报告生成完成: $(date)"
echo "========================================"
} > "$REPORT_FILE"
echo "报告已保存到: $REPORT_FILE"
资源监控报告(含图表)
#!/bin/bash
# resource_report.sh - 生成资源使用趋势报告
REPORT_FILE="resource_report_$(date +%Y%m%d).html"
LOG_FILE="/tmp/resource.log"
# 收集6小时数据(每10分钟)
echo "开始收集资源数据..."
for i in {1..36}; do
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
MEM=$(free | grep Mem | awk '{printf "%.1f", $3/$2*100}')
DISK=$(df -h / | awk 'NR==2 {print $5}' | cut -d'%' -f1)
echo "$(date +%H:%M),$CPU,$MEM,$DISK" >> "$LOG_FILE"
sleep 600
done
# 生成HTML报告
{
cat << EOF
<!DOCTYPE html>
<html>
<head>系统资源报告</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<h1>系统资源使用报告 - $(date)</h1>
<canvas id="cpuChart" width="800" height="400"></canvas>
<canvas id="memChart" width="800" height="400"></canvas>
<canvas id="diskChart" width="800" height="400"></canvas>
<script>
const data = [
EOF
# 添加数据点
while IFS=, read -r time cpu mem disk; do
echo "{ time: '$time', cpu: $cpu, mem: $mem, disk: $disk },"
done < "$LOG_FILE"
cat << EOF
];
// 创建图表
new Chart(document.getElementById('cpuChart'), {
type: 'line',
data: { datasets: [{ label: 'CPU%', data: data.map(d => d.cpu), borderColor: '#ff6384' }] }
});
// 其他图表类似...
</script>
</body>
</html>
EOF
} > "$REPORT_FILE"
echo "HTML报告已生成: $REPORT_FILE"
Windows 系统报告脚本
# system_report.ps1 - Windows系统报告
$reportDate = Get-Date -Format "yyyyMMdd_HHmmss"
$reportFile = "C:\Reports\system_report_$reportDate.txt"
# 创建报告目录
New-Item -ItemType Directory -Path "C:\Reports" -Force | Out-Null
{
Write-Host "========================================"
Write-Host "Windows 系统报告 - $(Get-Date)"
Write-Host "========================================"
# 系统信息
Write-Host "`n【系统信息】"
$os = Get-CimInstance Win32_OperatingSystem
Write-Host "系统: $($os.Caption) $($os.Version)"
Write-Host "主机名: $env:COMPUTERNAME"
Write-Host "最后启动: $($os.LastBootUpTime)"
# CPU信息
Write-Host "`n【CPU信息】"
$cpu = Get-CimInstance Win32_Processor
Write-Host "CPU: $($cpu.Name)"
Write-Host "核心数: $($cpu.NumberOfCores)"
Write-Host "使用率: $((Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue)%"
# 内存信息
Write-Host "`n【内存信息】"
$mem = Get-CimInstance Win32_ComputerSystem
$totalMem = [math]::Round($mem.TotalPhysicalMemory / 1GB)
$freeMem = [math]::Round((Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / 1MB)
Write-Host "总内存: ${totalMem}GB"
Write-Host "可用内存: ${freeMem}GB"
Write-Host "使用率: $([math]::Round((($totalMem - $freeMem) / $totalMem) * 100))%"
# 磁盘信息
Write-Host "`n【磁盘信息】"
Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" | ForEach-Object {
Write-Host "磁盘 $($_.DeviceID): $([math]::Round($_.Size/1GB))GB 总量, $([math]::Round($_.FreeSpace/1GB))GB 可用"
}
# 网络配置
Write-Host "`n【网络配置】"
Get-NetIPAddress -AddressFamily IPv4 | Where-Object {$_.InterfaceAlias -notlike "*Loopback*"} | ForEach-Object {
Write-Host "$($_.InterfaceAlias): $($_.IPAddress)"
}
# 运行中的服务
Write-Host "`n【运行中的服务】"
Get-Service | Where-Object {$_.Status -eq "Running"} | Select-Object -First 10 | ForEach-Object {
Write-Host " $($_.Name): $($_.DisplayName)"
}
Write-Host "`n========================================"
Write-Host "报告生成完成"
Write-Host "========================================"
} | Out-File $reportFile -Encoding UTF8
Write-Host "报告已保存到: $reportFile"
跨平台 Python 脚本
#!/usr/bin/env python3
# system_report.py - 跨平台系统报告生成器
import platform
import psutil
import datetime
import socket
import json
import os
import subprocess
def get_system_info():
"""收集系统信息"""
info = {}
# 基础信息
info['timestamp'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
info['hostname'] = socket.gethostname()
info['os'] = platform.platform()
info['python_version'] = platform.python_version()
# CPU信息
info['cpu_count'] = psutil.cpu_count()
info['cpu_percent'] = psutil.cpu_percent(interval=1)
info['cpu_freq'] = psutil.cpu_freq().current if hasattr(psutil.cpu_freq(), 'current') else 'N/A'
# 内存信息
mem = psutil.virtual_memory()
info['memory_total'] = mem.total / (1024**3) # GB
info['memory_used'] = mem.used / (1024**3)
info['memory_percent'] = mem.percent
# 磁盘信息
disk = psutil.disk_usage('/')
info['disk_total'] = disk.total / (1024**3)
info['disk_used'] = disk.used / (1024**3)
info['disk_percent'] = disk.percent
# 网络信息
net = psutil.net_io_counters()
info['network_sent'] = net.bytes_sent / (1024**2) # MB
info['network_recv'] = net.bytes_recv / (1024**2)
# 进程信息
processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
try:
processes.append(proc.info)
except:
pass
info['top_processes'] = sorted(processes, key=lambda x: x['cpu_percent'] if x['cpu_percent'] else 0, reverse=True)[:5]
return info
def generate_text_report(info):
"""生成文本报告"""
report = []
report.append("=" * 50)
report.append(f"系统报告 - {info['timestamp']}")
report.append("=" * 50)
report.append(f"\n主机名: {info['hostname']}")
report.append(f"操作系统: {info['os']}")
report.append("\n【CPU信息】")
report.append(f"核心数: {info['cpu_count']}")
report.append(f"使用率: {info['cpu_percent']}%")
report.append(f"频率: {info['cpu_freq']}MHz")
report.append("\n【内存信息】")
report.append(f"总量: {info['memory_total']:.2f}GB")
report.append(f"已用: {info['memory_used']:.2f}GB")
report.append(f"使用率: {info['memory_percent']}%")
report.append("\n【磁盘信息】")
report.append(f"总量: {info['disk_total']:.2f}GB")
report.append(f"已用: {info['disk_used']:.2f}GB")
report.append(f"使用率: {info['disk_percent']}%")
report.append("\n【网络信息】")
report.append(f"发送: {info['network_sent']:.2f}MB")
report.append(f"接收: {info['network_recv']:.2f}MB")
report.append("\n【CPU占用TOP5进程】")
for i, proc in enumerate(info['top_processes'], 1):
report.append(f" {i}. {proc['name']}: {proc['cpu_percent']}%")
report.append("\n" + "=" * 50)
return "\n".join(report)
def save_report(content, format='txt'):
"""保存报告"""
filename = f"system_report_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.{format}"
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
print(f"报告已保存到: {filename}")
return filename
if __name__ == "__main__":
# 收集信息
system_info = get_system_info()
# 生成文本报告
text_report = generate_text_report(system_info)
save_report(text_report, 'txt')
# 生成JSON报告(可选)
json_report = json.dumps(system_info, indent=2, ensure_ascii=False)
save_report(json_report, 'json')
定时生成报告(Cron任务)
# 每天凌晨2点生成报告,并发送到指定邮箱 0 2 * * * /path/to/system_report.sh && mail -s "Daily System Report" admin@example.com < /path/to/reports/system_report_$(date +\%Y\%m\%d).txt
使用说明
执行权限和运行方式
# Linux/Mac chmod +x system_report.sh ./system_report.sh # Windows PowerShell powershell -ExecutionPolicy Bypass -File system_report.ps1 # Python python3 system_report.py
输出格式升级(可选)
要输出为PDF或Excel,可以使用:
- PDF: 使用
wkhtmltopdf或reportlab库 - Excel: 使用
pandas+openpyxl - HTML邮件: 使用
smtplib发送HTML格式报告
这些脚本可以根据具体需求进行调整和扩展,需要我帮您定制特定的报告功能吗?
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播