云计算百科
云计算领域专业知识百科平台

Shell脚本获取服务器硬件信息

在这里插入图片描述

#!/bin/bash

RED='\\033[0;31m'
GREEN='\\033[0;32m'
NC='\\033[0m'

current_date=$(date "+%Y年%m月%d日 %A %H:%M:%S")
hostname=$(hostname)

# 检查sudo权限
sudo -v || { echo -e "${RED}错误:需要sudo权限执行此脚本${NC}"; exit 1; }

# 获取主板信息
get_pm_info() {
echo -e "${RED}主板信息${NC}:"
sudo dmidecode -t 1 | grep -E "Manufacturer|Product Name|Serial Number"
echo ""
}

# 获取CPU信息
get_cpu() {
echo -e "${RED}CPU信息:${NC}"
sudo dmidecode -t processor | grep -E 'Socket Designation|Core Count|Version'
echo ""
}

# 获取内存信息(修正版本)
get_mem() {
echo -e "${RED}内存信息:${NC}"
local total_slots=$(sudo dmidecode -t memory | grep -c "Memory Device")
echo "内存槽位总数: $total_slots"

echo " 已安装的内存模块:"
local installed_count=0

# 解析每个内存设备
sudo dmidecode -t memory | while IFS= read -r line; do
if [[ $line == *"Memory Device"* ]]; then
unset size locator
elif [[ $line == *"Size:"* ]]; then
size=$(echo "$line" | awk -F': ' '{print $2}')
elif [[ $line == *"Locator:"* ]]; then
locator=$(echo "$line" | awk -F': ' '{print $2}')
elif [[ -z $line && -n $size ]]; then
if [[ $size != "No Module Installed" && $size != "Unknown" ]]; then
((installed_count++))
echo -e " ${GREEN}$locator${NC}: $size"
fi
fi
done

echo " 已安装的内存模块数量: $installed_count"

# 获取总内存容量
echo -n " 内存总数: "
free -h | awk '/^Mem:/ {print $2}'
echo ""
}

# 获取磁盘信息
get_disk() {
echo -e "${RED}磁盘信息:${NC}"
lsblk -d -o NAME,TYPE,SIZE,MODEL | grep -vE 'loop|rom'
echo ""
}

# 获取GPU信息(修正版本)
get_gpu() {
echo -e "${RED}GPU信息:${NC}"
if command -v nvidia-smi &>/dev/null; then
nvidia-smi -L
else
echo "未检测到NVIDIA GPU"
echo "其他显示设备:"
lspci | grep -i 'vga\\|3d\\|display'
fi
echo ""
}

# 获取网络信息(修正版本)
get_network() {
echo -e "${RED}网络接口信息:${NC}"
local interfaces=$(ls /sys/class/net/)

echo -e "所有网络接口:"
for iface in $interfaces; do
echo -e " ${GREEN}$iface${NC}"
done

echo -e "\\nIPv4地址信息:"
for iface in $interfaces; do
local ipaddr=$(ip -4 addr show dev "$iface" 2>/dev/null | awk '/inet/ {print $2}')
if [ -n "$ipaddr" ]; then
echo -e " ${GREEN}$iface${NC}: $ipaddr"
else
echo -e " ${GREEN}$iface${NC}: 无IP地址"
fi
done
echo ""
}

# 主函数
main() {
echo -e "==================== 服务器硬件信息报告 ===================="
echo -e "日期: $current_date"
echo -e "主机名: $hostname"
echo -e "============================================================"
get_pm_info
get_cpu
get_mem
get_disk
get_gpu
get_network
}

# 执行主函数并保存输出
main | tee "/tmp/server_info_$(date +%F_%H-%M-%S).txt"

赞(0)
未经允许不得转载:网硕互联帮助中心 » Shell脚本获取服务器硬件信息
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!