#!/bin/bash function pkg_check() { local pkgs_debian=("dmidecode" "lshw" "pciutils" "numactl-dev" "ipmitool" "mlocate") local pkgs_centos=("dmidecode" "lshw" "pciutils" "numactl-devel" "ipmitool" "mlocate") local cmd=("dmidecode" "lshw" "lspci" "numactl" "ipmitool" "locate") local missing_pkgs=() local missing_cmds=() local package_manager="" local distro_pkgs=() # 检测包管理器 if command -v apt-get &>/dev/null; then package_manager="apt-get" distro_pkgs=("${pkgs_debian[@]}") elif command -v yum &>/dev/null; then package_manager="yum" distro_pkgs=("${pkgs_centos[@]}") elif command -v dnf &>/dev/null; then package_manager="dnf" distro_pkgs=("${pkgs_centos[@]}") else echo "错误: 未检测到支持的包管理器 (apt-get, yum, dnf)" return 1 fi echo "=== 检查系统命令依赖 ===" # 检查所有命令 for ((i=0; i<${#cmd[@]}; i++)); do if ! command -v "${cmd[i]}" &>/dev/null; then missing_cmds+=("${cmd[i]}") missing_pkgs+=("${distro_pkgs[i]}") echo "[缺失] ${cmd[i]} → 需要安装: ${distro_pkgs[i]}" else echo "[已安装] ${cmd[i]}" fi done # 处理缺失的包 if [ ${#missing_pkgs[@]} -eq 0 ]; then echo "所有依赖命令均已安装 ✓" return 0 else echo "=============================" echo "缺失的命令: ${missing_cmds[*]}" echo "需要安装的包: ${missing_pkgs[*]}" echo "" echo "安装命令:" echo " $package_manager install -y ${missing_pkgs[*]}" echo "" echo "请安装上述包后重新运行脚本" return 1 fi } pkg_check