From cc0045a11f4612757f6793e021a9eb230c41af2f Mon Sep 17 00:00:00 2001 From: zhao Date: Fri, 30 May 2025 19:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20bin/device=5Finfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhao --- bin/device_info | 157 ++++++++++++++++++------------------------------ 1 file changed, 60 insertions(+), 97 deletions(-) diff --git a/bin/device_info b/bin/device_info index e5f68ac..94f2ec8 100644 --- a/bin/device_info +++ b/bin/device_info @@ -1,121 +1,84 @@ #!/bin/bash - # ================================================ -# 脚本名称: 高级系统信息查询工具 -# 描述: 该脚本用于查询系统详细信息,采用彩色美化输出 -# 版本: 2.0 +# 脚本名称: 系统信息查询脚本 +# 描述: 查询系统基本信息 +# 版本: 1.0 # 作者: OPPEN321 # ================================================ # 颜色定义 -BLACK='\033[0;30m' -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[0;33m' -BLUE='\033[0;34m' -PURPLE='\033[0;35m' -CYAN='\033[0;36m' -WHITE='\033[0;37m' -BRIGHT_BLACK='\033[0;90m' -BRIGHT_RED='\033[0;91m' -BRIGHT_GREEN='\033[0;92m' -BRIGHT_YELLOW='\033[0;93m' -BRIGHT_BLUE='\033[0;94m' -BRIGHT_PURPLE='\033[0;95m' -BRIGHT_CYAN='\033[0;96m' -BRIGHT_WHITE='\033[0;97m' -NC='\033[0m' # No Color +RED="\033[1;31m" +GREEN="\033[1;32m" +YELLOW="\033[1;33m" +BLUE="\033[1;34m" +CYAN="\033[1;36m" +WHITE="\033[1;37m" +RESET="\033[0m" +ARROW="${BLUE}➤${RESET}" +SEP="${CYAN}==============================================${RESET}" -# 边框样式 -border_top() { - echo -e "${BRIGHT_BLUE}┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓${NC}" +print_section() { + echo -e "\n${SEP}" + echo -e "${GREEN}>>> $1${RESET}" + echo -e "${SEP}" } -border_bottom() { - echo -e "${BRIGHT_BLUE}┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛${NC}" -} +echo -e "${CYAN}=== 系统信息查询脚本 v1.0 ===${RESET}" -border_middle() { - echo -e "${BRIGHT_BLUE}┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫${NC}" -} - -section_title() { - echo -e "${BRIGHT_BLUE}┃ ${BRIGHT_CYAN}$1${BRIGHT_BLUE}${NC}" -} - -item_output() { - echo -e "${BRIGHT_BLUE}┃ ${YELLOW}$1${BRIGHT_WHITE}$2${NC}" -} - -# 清屏并显示标题 -clear -border_top -section_title " 🚀 高级系统信息查询工具" -border_middle - -# CPU 信息 -section_title "🧠 CPU 详细信息" -item_output "总核心数: " "$(nproc)" +print_section "CPU 信息" +echo -e "${ARROW} CPU 总核心数 : ${WHITE}$(nproc)${RESET}" if [ -f /proc/cpuinfo ]; then - item_output "型号名称: " "$(grep 'model name' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//')" - item_output "当前频率: " "$(grep 'cpu MHz' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//') MHz" - item_output "缓存大小: " "$(grep 'cache size' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//')" - item_output "架构类型: " "$(lscpu | grep 'Architecture' | cut -d':' -f2 | sed 's/^\s*//')" - item_output "每插槽核心数: " "$(lscpu | grep 'Core(s) per socket' | cut -d':' -f2 | sed 's/^\s*//')" - item_output "每核心线程数: " "$(lscpu | grep 'Thread(s) per core' | cut -d':' -f2 | sed 's/^\s*//')" - - MAX_FREQ=$(lscpu | grep -E 'CPU max MHz|CPU MHz max' | cut -d':' -f2 | sed 's/^\s*//') - MIN_FREQ=$(lscpu | grep -E 'CPU min MHz|CPU MHz min' | cut -d':' -f2 | sed 's/^\s*//') - item_output "最大频率: " "${MAX_FREQ:-未知} MHz" - item_output "最小频率: " "${MIN_FREQ:-未知} MHz" + echo -e "${ARROW} 型号名称 : ${WHITE}$(grep 'model name' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//')${RESET}" + echo -e "${ARROW} 当前频率 : ${WHITE}$(grep 'cpu MHz' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//') MHz${RESET}" + echo -e "${ARROW} 缓存大小 : ${WHITE}$(grep 'cache size' /proc/cpuinfo | head -n1 | cut -d':' -f2 | sed 's/^\s*//')${RESET}" + echo -e "${ARROW} 架构类型 : ${WHITE}$(lscpu | grep 'Architecture' | cut -d':' -f2 | sed 's/^\s*//')${RESET}" + echo -e "${ARROW} 每插槽核心数 : ${WHITE}$(lscpu | grep 'Core(s) per socket' | cut -d':' -f2 | sed 's/^\s*//')${RESET}" + echo -e "${ARROW} 每核心线程数 : ${WHITE}$(lscpu | grep 'Thread(s) per core' | cut -d':' -f2 | sed 's/^\s*//')${RESET}" + + MAX_FREQ=$(lscpu | grep -E 'CPU max MHz|CPU MHz max' | cut -d':' -f2 | sed 's/^\s*//') + MIN_FREQ=$(lscpu | grep -E 'CPU min MHz|CPU MHz min' | cut -d':' -f2 | sed 's/^\s*//') + echo -e "${ARROW} 最大频率 : ${WHITE}${MAX_FREQ:-未知} MHz${RESET}" + echo -e "${ARROW} 最小频率 : ${WHITE}${MIN_FREQ:-未知} MHz${RESET}" else - echo -e "${BRIGHT_BLUE}┃ ${RED}CPU 信息不可用(/proc/cpuinfo 文件缺失)${NC}" + echo -e "${RED}× CPU 信息不可用(/proc/cpuinfo 文件缺失)${RESET}" fi -border_middle -# 内存信息 -section_title "💾 内存信息" -free_output=$(free -h) -echo -e "${BRIGHT_BLUE}┃ ${BRIGHT_GREEN}${free_output}${NC}" | sed 's/^/┃ /' -border_middle +print_section "内存信息" +free -h | awk -v arrow="$ARROW" ' +$1 ~ /^Mem/ { + printf("%s 总内存 : %s\n%s 已使用 : %s\n%s 空闲内存 : %s\n", arrow, $2, arrow, $3, arrow, $4) +}' -# 磁盘信息 -section_title "📦 磁盘信息" -df_output=$(df -h | grep -E '^/dev/') -echo -e "${BRIGHT_BLUE}┃ ${BRIGHT_GREEN}${df_output}${NC}" | sed 's/^/┃ /' -border_middle +print_section "磁盘信息" +df -h | grep -E '^/dev/' | awk -v arrow="$ARROW" ' +{printf("%s %-15s 大小: %-7s 已用: %-7s 可用: %-7s 挂载点: %s\n", arrow, $1, $2, $3, $4, $6)}' -# 网卡信息 -section_title "🌐 网络接口信息" +print_section "网卡信息" if command -v ethtool >/dev/null 2>&1; then for iface in $(ip -br addr show | awk '{print $1}' | grep -v '^lo$'); do - echo -e "${BRIGHT_BLUE}┃ ${YELLOW}接口名称: ${BRIGHT_PURPLE}$iface${NC}" - echo -e "${BRIGHT_BLUE}┃ ${GREEN}状态: ${BRIGHT_CYAN}$(ip -br addr show | grep "^$iface" | awk '{print $2}')${NC}" - echo -e "${BRIGHT_BLUE}┃ ${GREEN}IP 地址: ${BRIGHT_CYAN}$(ip -br addr show | grep "^$iface" | awk '{print $3}')${NC}" - echo -e "${BRIGHT_BLUE}┃ ${GREEN}速率: ${BRIGHT_CYAN}$(ethtool "$iface" 2>/dev/null | grep 'Speed:' | awk '{print $2}' || echo '未知')${NC}" - echo -e "${BRIGHT_BLUE}┃${NC}" + STATE=$(ip -br addr show "$iface" | awk '{print $2}') + IPADDR=$(ip -br addr show "$iface" | awk '{print $3}') + SPEED=$(ethtool "$iface" 2>/dev/null | grep 'Speed:' | awk '{print $2}' || echo "未知") + echo -e "${ARROW} 接口名称 : ${WHITE}$iface${RESET}" + echo -e "${ARROW} 状态 : ${WHITE}$STATE${RESET}" + echo -e "${ARROW} IP 地址 : ${WHITE}$IPADDR${RESET}" + echo -e "${ARROW} 速率 : ${WHITE}$SPEED${RESET}" + echo -e "${CYAN}----------------------------------------------${RESET}" done else - echo -e "${BRIGHT_BLUE}┃ ${YELLOW}ethtool 未安装,仅显示基本网卡信息${NC}" - ip -br addr show | awk '{print "'"${BRIGHT_BLUE}┃ ${GREEN}接口: ${BRIGHT_CYAN}"' $1 "'"${GREEN}\t状态: ${BRIGHT_CYAN}"' $2 "'"${GREEN}\tIP: ${BRIGHT_CYAN}"' $3 "'"${NC}"'"}' + echo -e "${YELLOW}⚠ ethtool 未安装,仅显示基本网卡信息${RESET}" + ip -br addr show | awk -v arrow="$ARROW" '{printf("%s 接口: %-10s 状态: %-8s IP: %s\n", arrow, $1, $2, $3)}' fi -border_middle -# 系统详情 -section_title "🖥️ 系统详情" -item_output "内核信息: " "$(uname -a)" -[ -f /proc/version ] && item_output "版本信息: " "$(cat /proc/version)" -[ -f /etc/issue.net ] && item_output "发行版 (net): " "$(cat /etc/issue.net)" -[ -f /etc/issue ] && item_output "发行版: " "$(cat /etc/issue)" -border_middle +print_section "资源限制" +ulimit -a | while read -r line; do + echo -e "${ARROW} $line" +done -# 资源限制 -section_title "🔒 资源限制" -ulimit_output=$(ulimit -a) -echo -e "${BRIGHT_BLUE}┃ ${BRIGHT_GREEN}${ulimit_output}${NC}" | sed 's/^/┃ /' -border_bottom +echo -e "\n${GREEN}✅ 系统信息查询完成。${RESET}\n" -# 结束信息 -echo -e "\n${BRIGHT_BLUE}┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓${NC}" -echo -e "${BRIGHT_BLUE}┃ ${BRIGHT_GREEN}系统信息查询完成 ${BRIGHT_YELLOW}✔${BRIGHT_BLUE} ┃${NC}" -echo -e "${BRIGHT_BLUE}┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛${NC}\n" \ No newline at end of file + read -p "按 Enter 键返回..." +} + +# 执行查询 +system_cpuinfo