用脚本获取硬件固件版本

wen 实用脚本 1

本文目录导读:

用脚本获取硬件固件版本

  1. Linux 系统
  2. Windows 系统 (PowerShell)
  3. 通用脚本 (跨平台)
  4. 使用方法
  5. 注意事项

获取硬件固件版本的具体方法取决于你的硬件类型(如主板、硬盘、网卡、BIOS等)和操作系统,以下是几种常见场景的脚本示例:

Linux 系统

获取多个硬件固件版本的综合脚本

#!/bin/bash
echo "=== 系统固件信息 ==="
echo "BIOS版本:"
sudo dmidecode -s bios-version 2>/dev/null || echo "需要root权限"
echo -e "\n主板固件:"
sudo dmidecode -t baseboard 2>/dev/null | grep -i "Version"
echo -e "\n硬盘固件版本:"
for disk in /dev/sd[a-z]; do
    if [ -b "$disk" ]; then
        echo -n "$disk: "
        sudo smartctl -i $disk 2>/dev/null | grep "Firmware Version" | awk '{print $NF}'
    fi
done
echo -e "\n网卡固件:"
for iface in /sys/class/net/*; do
    iface_name=$(basename $iface)
    if [ "$iface_name" != "lo" ]; then
        echo -n "$iface_name: "
        sudo ethtool -i $iface_name 2>/dev/null | grep firmware-version | awk '{print $2}'
    fi
done
echo -e "\nGPU固件:"
if command -v nvidia-smi &> /dev/null; then
    nvidia-smi --query-gpu=name,driver_version --format=csv,noheader
elif command -v amdgpu&> /dev/null; then
    cat /sys/class/drm/card*/device/uevent | grep firmware
fi

仅获取BIOS/UEFI版本

#!/bin/bash
# 方法1: 使用dmidecode
if [ "$EUID" -eq 0 ]; then
    dmidecode -s bios-version
    dmidecode -s bios-release-date
else
    echo "请使用 sudo 运行此脚本"
fi

Windows 系统 (PowerShell)

获取主要硬件固件版本

# 获取BIOS版本
Write-Host "BIOS Version:"
Get-WmiObject Win32_BIOS | Select-Object SMBIOSBIOSVersion, Manufacturer, Name
Write-Host "`n硬盘固件版本:"
Get-WmiObject Win32_DiskDrive | Select-Object Model, FirmwareRevision
Write-Host "`n网卡固件版本:"
Get-NetAdapter | ForEach-Object {
    $adapter = Get-NetAdapterHardwareInfo -Name $_.Name
    [PSCustomObject]@{
        Name = $_.Name
        FirmwareVersion = $adapter.FirmwareVersion
    }
}
# 获取显卡驱动版本(部分显卡包含固件信息)
Write-Host "`n显卡信息:"
Get-WmiObject Win32_VideoController | Select-Object Name, DriverVersion

更详细的固件信息脚本

function Get-FirmwareVersions {
    Write-Host "=== 硬件固件版本信息 ===" -ForegroundColor Green
    # BIOS/UEFI
    $bios = Get-CimInstance -ClassName Win32_BIOS
    Write-Host "`nBIOS/UEFI:" -ForegroundColor Cyan
    Write-Host "  版本: $($bios.SMBIOSBIOSVersion)"
    Write-Host "  日期: $($bios.ReleaseDate)"
    # 硬盘/SSD
    Write-Host "`n存储设备:" -ForegroundColor Cyan
    Get-CimInstance -ClassName Win32_DiskDrive | ForEach-Object {
        Write-Host "  $($_.Model): 固件版本 $($_.FirmwareRevision)"
    }
    # 网卡
    Write-Host "`n网络适配器:" -ForegroundColor Cyan
    Get-NetAdapterHardwareInfo | Where-Object {$_.FirmwareVersion} | ForEach-Object {
        Write-Host "  $($_.Name): 固件版本 $($_.FirmwareVersion)"
    }
    # 主板
    $board = Get-CimInstance -ClassName Win32_BaseBoard
    Write-Host "`n主板信息:" -ForegroundColor Cyan
    Write-Host "  制造商: $($board.Manufacturer)"
    Write-Host "  产品: $($board.Product)"
    Write-Host "  版本: $($board.Version)"
}
Get-FirmwareVersions

通用脚本 (跨平台)

Python 脚本(跨平台)

#!/usr/bin/env python3
import platform
import subprocess
import sys
def get_linux_firmware():
    """获取Linux系统固件信息"""
    try:
        # BIOS版本
        result = subprocess.run(['sudo', 'dmidecode', '-s', 'bios-version'], 
                              capture_output=True, text=True)
        if result.returncode == 0:
            print(f"BIOS版本: {result.stdout.strip()}")
        # 硬盘固件
        result = subprocess.run(['lsblk', '-o', 'NAME,MODEL,FIRMWARE-REV'], 
                              capture_output=True, text=True)
        print("\n存储设备固件:")
        print(result.stdout)
    except Exception as e:
        print(f"错误: {e}")
def get_windows_firmware():
    """获取Windows系统固件信息"""
    try:
        import wmi
        c = wmi.WMI()
        # BIOS
        for bios in c.Win32_BIOS():
            print(f"BIOS版本: {bios.SMBIOSBIOSVersion}")
            print(f"制造商: {bios.Manufacturer}")
        # 硬盘
        print("\n硬盘固件:")
        for disk in c.Win32_DiskDrive():
            print(f"  {disk.Model}: {disk.FirmwareRevision}")
    except ImportError:
        print("需要安装wmi库: pip install wmi")
    except Exception as e:
        print(f"错误: {e}")
def main():
    system = platform.system()
    print(f"操作系统: {system}\n")
    if system == "Linux":
        get_linux_firmware()
    elif system == "Windows":
        get_windows_firmware()
    else:
        print(f"不支持的操作系统: {system}")
if __name__ == "__main__":
    main()

使用方法

Linux:

# 给予执行权限
chmod +x firmware_check.sh
# 使用root权限运行
sudo ./firmware_check.sh

Windows:

# 以管理员身份运行PowerShell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
.\firmware_check.ps1

Python:

pip install wmi  # Windows需要
python firmware_check.py

注意事项

  1. 权限要求:大多数硬件信息需要管理员/root权限
  2. 依赖工具
    • Linux: dmidecode, smartctl, ethtool
    • Windows: PowerShell, WMI
  3. 安全警告:确保脚本来源可信,特别是需要root权限时
  4. 硬件差异:不同硬件制造商可能使用不同的固件版本格式

如果你有特定的硬件类型(如特定型号的服务器、嵌入式设备等),请提供更多信息,我可以给出更精确的解决方案。

抱歉,评论功能暂时关闭!