本文目录导读:

我来帮您编写一个自动收集诊断信息的脚本,这里提供几个常用系统的版本:
Linux 系统诊断收集脚本
#!/bin/bash
# 系统诊断信息收集脚本
# 文件名: collect_diagnostics.sh
# 设置输出目录
OUTPUT_DIR="./diagnostics_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$OUTPUT_DIR"
echo "开始收集系统诊断信息..."
# 1. 系统基本信息
echo "=== 系统基本信息 ===" > "$OUTPUT_DIR/system_info.txt"
uname -a >> "$OUTPUT_DIR/system_info.txt"
cat /etc/os-release 2>/dev/null >> "$OUTPUT_DIR/system_info.txt"
echo "主机名: $(hostname)" >> "$OUTPUT_DIR/system_info.txt"
# 2. CPU 信息
echo "=== CPU 信息 ===" > "$OUTPUT_DIR/cpu_info.txt"
lscpu >> "$OUTPUT_DIR/cpu_info.txt"
echo "CPU 使用率:" >> "$OUTPUT_DIR/cpu_info.txt"
top -bn1 | head -5 >> "$OUTPUT_DIR/cpu_info.txt"
# 3. 内存信息
echo "=== 内存信息 ===" > "$OUTPUT_DIR/memory_info.txt"
free -h >> "$OUTPUT_DIR/memory_info.txt"
echo -e "\n内存详细:" >> "$OUTPUT_DIR/memory_info.txt"
cat /proc/meminfo >> "$OUTPUT_DIR/memory_info.txt"
# 4. 磁盘信息
echo "=== 磁盘信息 ===" > "$OUTPUT_DIR/disk_info.txt"
df -h >> "$OUTPUT_DIR/disk_info.txt"
echo -e "\n磁盘分区:" >> "$OUTPUT_DIR/disk_info.txt"
lsblk >> "$OUTPUT_DIR/disk_info.txt"
# 5. 网络信息
echo "=== 网络信息 ===" > "$OUTPUT_DIR/network_info.txt"
ip addr >> "$OUTPUT_DIR/network_info.txt"
echo -e "\n路由表:" >> "$OUTPUT_DIR/network_info.txt"
route -n >> "$OUTPUT_DIR/network_info.txt"
echo -e "\nDNS 配置:" >> "$OUTPUT_DIR/network_info.txt"
cat /etc/resolv.conf >> "$OUTPUT_DIR/network_info.txt"
# 6. 进程信息
echo "=== 进程信息 ===" > "$OUTPUT_DIR/process_info.txt"
ps aux --sort=-%cpu | head -20 >> "$OUTPUT_DIR/process_info.txt"
echo -e "\n\n内存占用前10:" >> "$OUTPUT_DIR/process_info.txt"
ps aux --sort=-%mem | head -11 >> "$OUTPUT_DIR/process_info.txt"
# 7. 服务状态
echo "=== 服务状态 ===" > "$OUTPUT_DIR/services_info.txt"
systemctl list-units --type=service --state=running >> "$OUTPUT_DIR/services_info.txt"
# 8. 日志信息(最近100条)
echo "=== 系统日志 ===" > "$OUTPUT_DIR/system_logs.txt"
journalctl -n 100 --no-pager >> "$OUTPUT_DIR/system_logs.txt"
# 9. 安全信息
echo "=== 安全信息 ===" > "$OUTPUT_DIR/security_info.txt"
echo "登录用户:" >> "$OUTPUT_DIR/security_info.txt"
who >> "$OUTPUT_DIR/security_info.txt"
echo -e "\n最近登录:" >> "$OUTPUT_DIR/security_info.txt"
last -5 >> "$OUTPUT_DIR/security_info.txt"
# 10. 打包诊断文件
echo "正在打包诊断文件..."
tar -czf "${OUTPUT_DIR}.tar.gz" -C "$OUTPUT_DIR" .
echo "诊断收集完成!文件保存在: ${OUTPUT_DIR}.tar.gz"
# 清理临时文件
rm -rf "$OUTPUT_DIR"
Windows 系统诊断收集脚本 (PowerShell)
# 系统诊断信息收集脚本
# 文件名: collect_diagnostics.ps1
$outputDir = "diagnostics_$(Get-Date -Format 'yyyyMMdd_HHmmss')"
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
Write-Host "开始收集系统诊断信息..." -ForegroundColor Green
# 1. 系统基本信息
Get-ComputerInfo | Out-File "$outputDir\system_info.txt"
# 2. CPU 信息
Get-CimInstance Win32_Processor | Format-List * | Out-File "$outputDir\cpu_info.txt"
Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 |
Format-Table Name, CPU, WorkingSet, StartTime | Out-File "$outputDir\process_cpu.txt"
# 3. 内存信息
Get-CimInstance Win32_OperatingSystem |
Select-Object TotalVisibleMemorySize, FreePhysicalMemory, TotalVirtualMemorySize, FreeVirtualMemory |
Format-Table | Out-File "$outputDir\memory_info.txt"
# 4. 磁盘信息
Get-CimInstance Win32_LogicalDisk -Filter "DriveType=3" |
Select-Object DeviceID, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}},
@{Name="FreeSpace(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}} |
Format-Table | Out-File "$outputDir\disk_info.txt"
# 5. 网络信息
Get-NetAdapter | Format-Table Name, Status, LinkSpeed, MacAddress | Out-File "$outputDir\network_info.txt"
Get-NetIPAddress | Where-Object AddressFamily -eq IPv4 |
Select-Object InterfaceAlias, IPAddress, PrefixLength |
Format-Table | Out-File -Append "$outputDir\network_info.txt"
# 6. 服务状态
Get-Service | Where-Object Status -eq "Running" |
Select-Object Name, DisplayName, Status |
Format-Table | Out-File "$outputDir\services_info.txt"
# 7. 事件日志(最近100条系统日志)
Get-EventLog -LogName System -Newest 100 |
Select-Object TimeGenerated, EntryType, Source, Message |
Format-Table -Wrap | Out-File "$outputDir\system_logs.txt"
# 8. 硬件信息
Get-CimInstance Win32_SystemEnclosure |
Select-Object Manufacturer, Model, SerialNumber |
Format-Table | Out-File "$outputDir\hardware_info.txt"
# 打包
Compress-Archive -Path "$outputDir\*" -DestinationPath "$outputDir.zip"
Write-Host "诊断收集完成!文件保存在: $outputDir.zip" -ForegroundColor Green
Remove-Item -Path $outputDir -Recurse -Force
用法说明
Linux 系统:
# 赋予执行权限 chmod +x collect_diagnostics.sh # 运行脚本 ./collect_diagnostics.sh
Windows 系统:
# 如果执行策略限制,先设置 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser # 运行脚本 .\collect_diagnostics.ps1
增强版本(带参数和错误处理)
#!/bin/bash
# 增强版诊断收集脚本
VERSION="1.0"
usage() {
echo "用法: $0 [选项]"
echo "选项:"
echo " -o, --output DIR 指定输出目录"
echo " -l, --log-count N 收集的日志数量(默认100)"
echo " -v, --verbose 详细输出"
echo " -h, --help 显示帮助信息"
exit 1
}
# 参数解析
while [[ $# -gt 0 ]]; do
case $1 in
-o|--output)
OUTPUT_DIR="$2"
shift 2
;;
-l|--log-count)
LOG_COUNT="$2"
shift 2
;;
-v|--verbose)
VERBOSE=true
shift
;;
-h|--help)
usage
;;
*)
echo "未知参数: $1"
usage
;;
esac
done
# 设置默认值
OUTPUT_DIR=${OUTPUT_DIR:-"./diagnostics_$(date +%Y%m%d_%H%M%S)"}
LOG_COUNT=${LOG_COUNT:-100}
# 检查命令是否存在
check_command() {
if ! command -v $1 &> /dev/null; then
echo "警告: 命令 $1 未找到"
return 1
fi
return 0
}
# 主函数
main() {
echo "诊断收集工具 v$VERSION"
echo "输出目录: $OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR" || {
echo "错误: 无法创建输出目录"
exit 1
}
# 收集信息...
# (这里插入上面的诊断收集代码)
# 错误处理示例
if [ $? -eq 0 ]; then
echo "诊断收集成功完成"
else
echo "诊断收集过程中出现错误"
exit 1
fi
}
main
这些脚本可以:
- 收集系统核心信息
- 自动生成时间戳文件
- 打包压缩便于传输
- 添加了错误处理和参数选项
根据您的具体需求,可以调整收集的内容和格式。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播