怎么用脚本获取硬件信息

wen 实用脚本 3

本文目录导读:

怎么用脚本获取硬件信息

  1. Linux 系统脚本
  2. Windows 系统脚本
  3. 跨平台 Python 脚本
  4. 高级 Python 脚本(使用第三方库)
  5. 网络发现脚本
  6. 使用建议

我来介绍几种获取硬件信息的脚本方法,涵盖不同操作系统和场景:

Linux 系统脚本

综合硬件信息脚本

#!/bin/bash
# 获取Linux系统硬件信息
echo "=== CPU 信息 ==="
lscpu | grep -E "Model name|CPU\(s\)|Architecture"
echo -e "\n=== 内存信息 ==="
free -h | awk 'NR==1 || NR==2'
echo -e "\n=== 磁盘信息 ==="
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
echo -e "\n=== 图形/显卡信息 ==="
lspci | grep -i vga
echo -e "\n=== 网络接口 ==="
ip -br addr show
echo -e "\n=== USB设备 ==="
lsusb

使用dmidecode(需root权限)

#!/bin/bash
# 获取DMI/SMBIOS硬件信息
echo "=== 系统信息 ==="
dmidecode -t system | grep -E "Manufacturer|Product Name"
echo -e "\n=== 主板信息 ==="
dmidecode -t baseboard | grep -E "Manufacturer|Product Name"
echo -e "\n=== BIOS信息 ==="
dmidecode -t bios | grep -E "Vendor|Version"
echo -e "\n=== 内存条信息 ==="
dmidecode -t memory | grep -E "Size|Speed|Manufacturer|Part Number"

Windows 系统脚本

PowerShell 脚本

# 获取Windows硬件信息
Write-Host "=== CPU 信息 ===" -ForegroundColor Green
Get-CimInstance Win32_Processor | 
    Select-Object Name, NumberOfCores, NumberOfLogicalProcessors
Write-Host "`n=== 内存信息 ===" -ForegroundColor Green
Get-CimInstance Win32_ComputerSystem | 
    Select-Object @{N='TotalMemoryGB';E={[math]::Round($_.TotalPhysicalMemory/1GB,2)}}
Get-CimInstance Win32_PhysicalMemory | 
    Select-Object Manufacturer, Capacity, Speed
Write-Host "`n=== 磁盘信息 ===" -ForegroundColor Green
Get-PhysicalDisk | 
    Select-Object FriendlyName, MediaType, Size
Write-Host "`n=== 显卡信息 ===" -ForegroundColor Green
Get-CimInstance Win32_VideoController | 
    Select-Object Name, AdapterRAM, DriverVersion
Write-Host "`n=== 网络适配器 ===" -ForegroundColor Green
Get-NetAdapter | Where-Object Status -eq 'Up' |
    Select-Object Name, InterfaceDescription, MacAddress
Write-Host "`n=== 电池信息 ===" -ForegroundColor Green
Get-CimInstance Win32_Battery | 
    Select-Object EstimatedChargeRemaining, BatteryStatus

使用WMIC(传统方法)

@echo off
echo === CPU信息 ===
wmic cpu get name,numberofcores
echo.
echo === 内存信息 ===
wmic memorychip get manufacturer,capacity,speed
echo.
echo === 磁盘信息 ===
wmic diskdrive get model,size,mediatype
echo.
echo === 显卡信息 ===
wmic path win32_videocontroller get name,driverversion
echo.
echo === 主板信息 ===
wmic baseboard get manufacturer,product

跨平台 Python 脚本

使用platform模块

#!/usr/bin/env python3
import platform
import socket
import subprocess
import json
def get_system_info():
    info = {}
    # 基础系统信息
    info['system'] = platform.system()
    info['version'] = platform.version()
    info['machine'] = platform.machine()
    info['processor'] = platform.processor()
    info['hostname'] = socket.gethostname()
    return info
def get_linux_info():
    """Linux特定信息"""
    import os
    info = {}
    # CPU信息
    with open('/proc/cpuinfo') as f:
        cpuinfo = f.read()
    # 内存信息
    with open('/proc/meminfo') as f:
        meminfo = f.read().split('\n')
        for line in meminfo:
            if line.startswith('MemTotal'):
                info['total_memory'] = line.split(':')[1].strip()
    # 磁盘信息
    try:
        result = subprocess.check_output(['df', '-h']).decode()
        info['disk'] = result
    except:
        pass
    return info
if __name__ == "__main__":
    system_info = get_system_info()
    print("=== 系统信息 ===")
    for key, value in system_info.items():
        print(f"{key}: {value}")
    if platform.system() == "Linux":
        print("\n=== Linux硬件信息 ===")
        linux_info = get_linux_info()
        for key, value in linux_info.items():
            print(f"{key}: {value}")

高级 Python 脚本(使用第三方库)

#!/usr/bin/env python3
"""使用psutil库获取硬件信息"""
import psutil
import platform
import datetime
def get_hardware_info():
    info = {}
    # CPU信息
    info['cpu'] = {
        'physical_cores': psutil.cpu_count(logical=False),
        'logical_cores': psutil.cpu_count(logical=True),
        'max_frequency': psutil.cpu_freq().max,
        'current_frequency': psutil.cpu_freq().current,
        'usage_percent': psutil.cpu_percent(interval=1)
    }
    # 内存信息
    mem = psutil.virtual_memory()
    info['memory'] = {
        'total': mem.total / (1024**3),  # GB
        'available': mem.available / (1024**3),
        'used_percent': mem.percent
    }
    # 磁盘信息
    info['disk'] = []
    for partition in psutil.disk_partitions():
        try:
            usage = psutil.disk_usage(partition.mountpoint)
            info['disk'].append({
                'device': partition.device,
                'mountpoint': partition.mountpoint,
                'total_gb': usage.total / (1024**3),
                'used_percent': usage.percent
            })
        except:
            pass
    # 网络信息
    net = psutil.net_if_addrs()
    info['network'] = []
    for interface, addrs in net.items():
        for addr in addrs:
            if addr.family == 2:  # IPv4
                info['network'].append({
                    'interface': interface,
                    'ip': addr.address,
                    'netmask': addr.netmask
                })
    return info
if __name__ == "__main__":
    import json
    hardware_info = get_hardware_info()
    print(json.dumps(hardware_info, indent=2))

网络发现脚本

#!/bin/bash
# 跨平台网络硬件发现
get_mac_address() {
    # Linux
    if [ "$(uname)" == "Linux" ]; then
        ip link show | grep ether | awk '{print $2}'
    # macOS
    elif [ "$(uname)" == "Darwin" ]; then
        ifconfig | grep ether | awk '{print $2}'
    # Windows Git Bash
    else
        ipconfig //all | grep "物理地址" | awk -F ': ' '{print $2}'
    fi
}
echo "本机MAC地址:"
get_mac_address
echo -e "\n系统架构:"
uname -m 2>/dev/null || echo "Unknown"

使用建议

  1. 选择原则

    • Linux 服务器:使用 shell/bash 脚本
    • Windows 管理:使用 PowerShell
    • 跨平台应用:使用 Python
    • 快速诊断:使用命令行工具
  2. 安装依赖

    # Python psutil
    pip install psutil
  3. 权限注意

    • 某些命令需要 root/管理员权限
    • dmidecode 需要 root 权限
  4. 输出格式化

    • 建议将输出保存为 JSON 格式便于程序处理
    • 可以添加时间戳和日志功能

根据你的具体需求选择合适的方法,如果需要更详细的信息,我可以针对特定硬件或场景进行补充。

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