修复软件安装选择逻辑,优化信息逻辑
This commit is contained in:
parent
69ef7666f9
commit
a29c459709
@ -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 "速度测试中"
|
@ -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 "软件已经全部安装成功"
|
||||
echo "软件已经全部安装成功"
|
||||
|
Loading…
Reference in New Issue
Block a user