From a29c45970998543be508736eb5bda76282144270 Mon Sep 17 00:00:00 2001 From: lsy Date: Sun, 19 Jan 2025 21:49:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BD=AF=E4=BB=B6=E5=AE=89?= =?UTF-8?q?=E8=A3=85=E9=80=89=E6=8B=A9=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BF=A1=E6=81=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Config/System/Basic/info.sh | 67 ++++++++------- Config/software.sh | 165 ++++++++++++++++++------------------ README.md | 1 + 3 files changed, 121 insertions(+), 112 deletions(-) diff --git a/Config/System/Basic/info.sh b/Config/System/Basic/info.sh index 09e5b9b..ea7d2d0 100644 --- a/Config/System/Basic/info.sh +++ b/Config/System/Basic/info.sh @@ -1,34 +1,39 @@ #!/bin/bash -declare cpu_info=$(cat /proc/cpuinfo) -declare cpu_moudle=$(echo "$cpu_info" | grep 'model name' | awk -F ': ' '{print $2}' | head -n 1) -echo "CPU 型号 :$cpu_moudle" -declare cpu_cores=$(echo "$cpu_info" | grep 'cpu cores' | awk -F ': ' '{print $2}' | head -n 1) -echo "CPU 核心数 :$cpu_cores" -declare cpu_mhz=$(echo "$cpu_info"| grep 'cpu MHz' | awk -F ': ' '{print $2}' | head -n 1) -echo "CPU 频率 :$cpu_mhz" -declare cpu_cache=$(echo "$cpu_info"| grep 'cache size' | awk -F ': ' '{print $2}' | head -n 1) -echo "CPU 缓存 :$cpu_cache" -declare swap=$(free -m | awk '/Swap/ {sum += $2} END {print sum / 1024 " GB"}') -echo "SWAP :$swap" -declare disk=$(lsblk -b -d -o SIZE,NAME | grep -vE "loop|ram" | awk '{sum += $1} END {print sum / 1024 /1024 / 1024 " GB"}') -echo "硬盘空间 :$disk" -declare uptime_time=$(awk '{printf("%d天 %d小时 %d分钟\n", $1/86400, ($1%86400)/3600, ($1%3600)/60)}' /proc/uptime) -echo "系统在线时间:$uptime_time " -declare version=$(cat /etc/os-release | grep -E '^ID=' | awk -F= '{print $2}') -echo "系 统 :$version" -declare kernel=$(cat /proc/version | awk '{print $3}') -echo "内 核 :$kernel" -declare tcp_mode=$(sysctl -a | grep tcp_congestion_control | awk -F ' = ' '{print $2}') -echo "TCP加速方式 :$tcp_mode" -declare systemd_detect_virt=$(systemd-detect-virt) -echo "虚拟化框架 :$systemd_detect_virt" -declare ip_info=$(curl -s https://ip.lsy22.com/) -declare ip_v4=$(echo $ip_info | grep -oP '"ipv4":\s*"\K[^"]+') -echo "IPV4 位置 :$ip_v4" -declare ip_v6=$(echo $ip_info | grep -oP '"ipv6":\s*"\K[^"]+') -echo "IPV6 位置 :$ip_v6" +declare -A info_dict +declare -a info_array + +cpu_info=$(cat /proc/cpuinfo) +info_dict["CPU 型号"]=$(echo "$cpu_info" | grep -m1 -oP 'model name\s*:\s*\K.+') +info_dict["CPU 核心数"]=$(echo "$cpu_info" | grep -m1 -oP 'cpu cores\s*:\s*\K\d+') +info_dict["CPU 频率"]=$(echo "$cpu_info" | grep -m1 -oP 'cpu MHz\s*:\s*\K.+') +info_dict["CPU 缓存"]=$(echo "$cpu_info" | grep -m1 -oP 'cache size\s*:\s*\K.+') + +info_dict["SWAP"]=$(free -m | awk '/Swap/ {printf "%.2f GB", $2/1024}') +info_dict["硬盘空间"]=$(lsblk -b -d -o SIZE,NAME | grep -vE "loop|ram" | awk '{sum += $1} END {printf "%.2f GB", sum/1024/1024/1024}') +info_dict["系统在线时间"]=$(awk '{printf("%d天 %d小时 %d分钟", $1/86400, ($1%86400)/3600, ($1%3600)/60)}' /proc/uptime) +info_dict["内核"]=$(uname -r) +info_dict["TCP加速方式"]=$(sysctl -n net.ipv4.tcp_congestion_control) +info_dict["虚拟化框架"]=$(systemd-detect-virt) + +ip_info=$(curl -s https://ip.lsy22.com/) +info_dict["IPV4 位置"]=$(echo "$ip_info" | grep -oP '"ipv4":\s*"\K[^"]+') +info_dict["IPV6 位置"]=$(echo "$ip_info" | grep -oP '"ipv6":\s*"\K[^"]+') + +info_array=( + "CPU 型号" "CPU 核心数" "CPU 频率" "CPU 缓存" + "SWAP" "硬盘空间" "系统在线时间" "内核" "TCP加速方式" + "虚拟化框架" "IPV4 位置" "IPV6 位置" +) + +max_length=$(printf "%s\n" "${info_array[@]}" | awk '{print length}' | sort -nr | head -1) + +for title in "${info_array[@]}"; do + printf "%-${max_length}s : %s\n" "$title" "${info_dict[$title]}" +done + +echo -e "\n待办项目:" echo "CPU 测试中" echo "内存测试中" -echo "以下为ipv4测试" -echo "以下为ipv6测试" -echo "以下为速度测试" +echo "IPV4测试中" +echo "IPV6测试中" +echo "速度测试中" \ No newline at end of file diff --git a/Config/software.sh b/Config/software.sh index 43e5a8f..4d7f570 100644 --- a/Config/software.sh +++ b/Config/software.sh @@ -5,15 +5,15 @@ declare os_version="$(cat /etc/os-release | grep "^ID" | awk -F '=' '{print $2}' declare install_status=0 declare package_manager -if [[ -f "/usr/bin/apt-get" ]];then +if [[ -f "/usr/bin/apt-get" ]]; then package_manager='apt-get' install_command+="${package_manager} install -y" apt-get update -y -elif [[ -f "/usr/bin/apt" ]];then +elif [[ -f "/usr/bin/apt" ]]; then package_manager='apt' install_command+="${package_manager} install -y" apt update -y -elif [[ -f "/usr/bin/pacman" ]];then +elif [[ -f "/usr/bin/pacman" ]]; then package_manager='pacman' install_command+="${package_manager} -Sy --noconfirm" pacman -Syu --noconfirm @@ -39,97 +39,100 @@ package_options['docker']=1 package_options['x-cmd']=1 echo "========$(basename $0 .sh)========" -for i in "${!package_options[@]}" ; do - package_count=$(( package_count+1 )) - package_names[$package_count]=$i - echo "${package_count}.${i}" +for i in "${!package_options[@]}"; do + package_count=$((package_count + 1)) + package_names[$package_count]=$i + echo "${package_count}.${i}" done echo "请输入需要安装的软件序号(默认安装全部)" read -p "用 空格 隔开:" selected_packages -if [[ -z $selected_packages ]];then - for (( i = 1; i <= ${#package_options[@]}; i++ )); do - if [[ $i != 1 ]]; then - selected_packages="$selected_packages $i" - else - selected_packages="$i" - fi - done -elif ! [[ $selected_packages -ge 1 && $selected_packages -le ${#package_options[@]} || $selected_packages =~ ([1-${#package_options[@]}][\s]?)+ ]];then - echo "输入错误" - exit -fi - -for i in $selected_packages ; do - if [[ ${package_options[${package_names[$i]}]} == 0 ]]; then - eval "$install_command ${package_names[$i]}" +if [[ -z $selected_packages ]]; then + for ((i = 1; i <= ${#package_options[@]}; i++)); do + if [[ $i != 1 ]]; then + selected_packages="$selected_packages $i" else - package_options[${package_names[$i]}]=2 + selected_packages="$i" fi + done +else + for i in $selected_packages; do + if ! [[ $i =~ ^[1-9]+$ && $i -gt 1 || $i -lt ${#package_options[@]} ]]; then + echo "输入错误$i" + exit + fi + done +fi +for i in $selected_packages; do + if [[ ${package_options[${package_names[$i]}]} == 0 ]]; then + eval "$install_command ${package_names[$i]}" + else + package_options[${package_names[$i]}]=2 + fi done -if [[ ${package_options['x-cmd']} == 2 ]];then - eval "$(curl https://get.x-cmd.com)" +if [[ ${package_options['x-cmd']} == 2 ]]; then + eval "$(curl https://get.x-cmd.com)" fi -if [[ ${package_options['docker']} == 2 ]];then - echo "请选择docker下载镜像站" - declare -A docker_mirrors - docker_mirrors['官方']='https://download.docker.com' - docker_mirrors['清华大学']='https://mirrors.tuna.tsinghua.edu.cn/docker-ce' - docker_mirrors['阿里云']='https://mirrors.aliyun.com/docker-ce' - docker_mirrors['网易云']='https://mirrors.163.com/docker-ce' +if [[ ${package_options['docker']} == 2 ]]; then + echo "请选择docker下载镜像站" + declare -A docker_mirrors + docker_mirrors['官方']='https://download.docker.com' + docker_mirrors['清华大学']='https://mirrors.tuna.tsinghua.edu.cn/docker-ce' + docker_mirrors['阿里云']='https://mirrors.aliyun.com/docker-ce' + docker_mirrors['网易云']='https://mirrors.163.com/docker-ce' - declare -a docker_mirror_options - declare docker_mirror_choice=0 - - for i in "${!docker_mirrors[@]}"; do - docker_mirror_choice=$((docker_mirror_choice + 1)) - docker_mirror_options[$docker_mirror_choice]=$i - echo "${docker_mirror_choice}.${i}" - done - read -p "请选择Docker镜像站(默认 1):" docker_mirror_choice - declare docker_mirror - if [[ $docker_mirror_choice =~ [1-${#docker_mirrors[@]}] ]];then - docker_mirror_choice=${docker_mirror_options[$docker_mirror_choice]} - docker_mirror=${docker_mirrors[$docker_mirror_choice]} - else - docker_mirror=${docker_mirrors[${docker_mirror_options[1]}]} - fi + declare -a docker_mirror_options + declare docker_mirror_choice=0 - if [[ ${package_manager} == 'apt' || ${package_manager} == 'apt-get' ]];then - ${package_manager} update - ${package_manager} install ca-certificates curl -y - install -m 0755 -d /etc/apt/keyrings - curl -fsSL "${docker_mirror}/linux/${os_version}/gpg" -o /etc/apt/keyrings/docker.asc - chmod a+r /etc/apt/keyrings/docker.asc - echo \ - "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] ${docker_mirror}/linux/${os_version} \ - $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ - tee /etc/apt/sources.list.d/docker.list > /dev/null - ${package_manager} update - ${package_manager} install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y - elif [[ ${package_manager} == 'pacman' ]];then - pacman -Sy docker --noconfirm - systemctl start docker.service - systemctl enable docker.service - usermod -aG docker $USER - newgrp docker - fi + for i in "${!docker_mirrors[@]}"; do + docker_mirror_choice=$((docker_mirror_choice + 1)) + docker_mirror_options[$docker_mirror_choice]=$i + echo "${docker_mirror_choice}.${i}" + done + read -p "请选择Docker镜像站(默认 1):" docker_mirror_choice + declare docker_mirror + if [[ $docker_mirror_choice =~ [1-${#docker_mirrors[@]}] ]]; then + docker_mirror_choice=${docker_mirror_options[$docker_mirror_choice]} + docker_mirror=${docker_mirrors[$docker_mirror_choice]} + else + docker_mirror=${docker_mirrors[${docker_mirror_options[1]}]} + fi + + if [[ ${package_manager} == 'apt' || ${package_manager} == 'apt-get' ]]; then + ${package_manager} update + ${package_manager} install ca-certificates curl -y + install -m 0755 -d /etc/apt/keyrings + curl -fsSL "${docker_mirror}/linux/${os_version}/gpg" -o /etc/apt/keyrings/docker.asc + chmod a+r /etc/apt/keyrings/docker.asc + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] ${docker_mirror}/linux/${os_version} \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | + tee /etc/apt/sources.list.d/docker.list >/dev/null + ${package_manager} update + ${package_manager} install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y + elif [[ ${package_manager} == 'pacman' ]]; then + pacman -Sy docker --noconfirm + systemctl start docker.service + systemctl enable docker.service + usermod -aG docker $USER + newgrp docker + fi fi -if [[ ${package_options['zsh-beautify']} == 2 ]];then - curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | sed 's/read -r opt//g'| sed 's/exec zsh -l//g'| sh - while [[ ! -d "$HOME/.oh-my-zsh" ]]; do - sleep 3 - done - git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k - git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting - git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions - sed -i 's/^#\?ZSH_THEME.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/g' ~/.zshrc - sed -i 's/^#\?plugins.*/plugins=(zsh-syntax-highlighting zsh-autosuggestions command-not-found)/g' ~/.zshrc - chsh -s /bin/zsh - exec zsh -l +if [[ ${package_options['zsh-beautify']} == 2 ]]; then + curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | sed 's/read -r opt//g' | sed 's/exec zsh -l//g' | sh + while [[ ! -d "$HOME/.oh-my-zsh" ]]; do + sleep 3 + done + git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting + git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions + sed -i 's/^#\?ZSH_THEME.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/g' ~/.zshrc + sed -i 's/^#\?plugins.*/plugins=(zsh-syntax-highlighting zsh-autosuggestions command-not-found)/g' ~/.zshrc + chsh -s /bin/zsh + exec zsh -l fi -echo "软件已经全部安装成功" \ No newline at end of file +echo "软件已经全部安装成功" diff --git a/README.md b/README.md index f7fecb1..51ed26b 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ * **bbr_open** : 开启 BBR 网络加速 * **language** : 系统语言切换(中英文) * **reinstall** : 系统重装工具 +* **info** : 系统信息 #### 用户管理 (User)