DSUK Linux 工具集【自用】
bash <(curl -Ls https://gemstar.eu.org/f/8Mtg/bash.sh)
#!/bin/bash
# 脚本安装路径
SCRIPT_DIR="$HOME/bin"
MENU_SCRIPT_PATH="$SCRIPT_DIR/dsuk-menu.sh"
LAUNCHER_PATH="$SCRIPT_DIR/dsuk"
# 首先创建目录
mkdir -p "$SCRIPT_DIR"
# 将主脚本内容写入文件
cat > "$MENU_SCRIPT_PATH" << 'EOF'
#!/bin/bash
# 定义颜色和样式
NC='\033[0m'
BOLD='\033[1m'
DIM='\033[2m'
# 精选色彩调色板
COLORS=(
'\033[38;5;45m' # 清新青色
'\033[38;5;81m' # 柔和蓝色
'\033[38;5;117m' # 浅蓝色
'\033[38;5;48m' # 明亮绿色
'\033[38;5;83m' # 草绿色
'\033[38;5;42m' # 森林绿
'\033[38;5;39m' # 天蓝色
)
# 渐变标题
print_gradient_header() {
local title="$1"
local width=50
local padding=$(( (width - ${#title}) / 2 ))
printf "\n${BOLD}"
printf '%*s' "$padding" | tr ' ' '-'
printf "${COLORS[0]}[ ${NC}${BOLD}$title${COLORS[0]} ]${NC}"
printf '%*s\n' "$padding" | tr ' ' '-'
printf "${NC}\n"
}
# 使用简单数组存储命令
declare -a commands=(
# 系统信息类
"系统信息:系统:🖥️ 系统版本:cat /etc/os-release"
"系统信息:系统:💻 系统参数:uname -a"
"系统信息:系统:📊 系统负载:uptime"
"系统信息:系统:🏷️ 系统信息:hostnamectl"
# 资源监控类
"资源监控:资源:💽 磁盘空间:df -h"
"资源监控:资源:🧠 内存状态:free -h"
"资源监控:资源:🔌 系统资源:command -v htop >/dev/null 2>&1 || apt-get install htop -y; htop"
"资源监控:资源:🌡️ CPU温度-armbian:armbianmonitor -M"
"资源监控:资源:💾 分区详情:lsblk"
# 网络诊断类
"网络诊断:网络:🌐 网络连接:ip addr"
"网络诊断:网络:📡 网络测试:ping -c 4 baidu.com"
"网络诊断:网络:🔗 网络端口:netstat -tuln"
"网络诊断:网络:🌍 公网IP:curl ifconfig.me"
"网络诊断:网络:📶 网络流量:command -v bmon >/dev/null 2>&1 || apt-get install bmon -y; bmon"
# 进程管理类
"进程管理:进程:📋 进程列表:ps aux"
"进程管理:进程:💥 进程树:pstree"
"进程管理:进程:⚙️ 系统服务:systemctl list-units --type=service"
# 系统工具类
"系统工具:工具:🔎 文件搜索>1000M:find / -type f -size +1000M 2>/dev/null"
"系统工具:工具:📁 目录大小:du -sh ~/*"
"系统工具:工具:🗑️ 清理缓存:sync && echo 3 > /proc/sys/vm/drop_caches"
"系统工具:工具:🔐 安全检查:who && last"
# 其它工具类
"其它工具:其它:🎨 neofetch:command -v neofetch >/dev/null 2>&1 || apt-get install neofetch -y; neofetch"
"其它工具:其它:🔄 系统换源:bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh)"
"其它工具:其它:💿 DD系统:wget -N --no-check-certificate https://raw.githubusercontent.com/veip007/dd/master/InstallNET.sh && chmod +x InstallNET.sh && ./InstallNET.sh -d 11 -v 64 -p \"ssln5014.\""
"其它工具:其它:🚀 H2安装:curl -sSL https://ghp.ci/https://raw.githubusercontent.com/seagullz4/hysteria2/main/install.sh -o install.sh && chmod +x install.sh && bash install.sh"
"其它工具:其它:📊 X-UI面板:bash <(curl -Ls https://raw.githubusercontent.com/FranzKafkaYu/x-ui/master/install.sh)"
"其它工具:其它:🎛️ 1Panel面板:curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh"
"其它工具:其它:🈺 中文化:wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/LocaleCN/master/LocaleCN.sh && bash LocaleCN.sh"
"其它工具:其它:📦 PM2安装:apt install -y npm && npm install pm2@latest -g && pm2 list"
)
# 显示菜单函数
show_menu() {
clear
print_gradient_header "DSUK Linux 工具集"
echo -e "${COLORS[0]} ██████╗ ███████╗ ██╗ ██╗ ██╗ ██╗\n ██╔══██╗ ██╔════╝ ██║ ██║ ██║ ██╔╝\n ██║ ██║ ███████╗ ██║ ██║ █████╔╝ \n ██║ ██║ ╚════██║ ██║ ██║ ██╔═██╗ \n ██████╔╝ ███████║ ╚██████╔╝ ██║ ██╗\n ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝${NC}"
local current_category=""
local command_number=1
for cmd in "${commands[@]}"; do
IFS=':' read -r category subcategory icon_and_name command <<< "$cmd"
if [ "$category" != "$current_category" ]; then
print_gradient_header "$category"
current_category="$category"
fi
local color_index=$(( (command_number - 1) % ${#COLORS[@]} ))
printf "${COLORS[$color_index]}%3d)${NC} %s\n" "$command_number" "$icon_and_name"
((command_number++))
done
printf "\n${BOLD}操作菜单:${NC}\n"
printf "${COLORS[3]}q. 退出程序${NC}\n"
printf "${COLORS[1]}u. 卸载程序${NC}\n"
echo
}
# 卸载函数
uninstall_dsuk() {
echo "正在卸载 DSUK..."
rm -rf "$HOME/bin/dsuk-menu.sh"
rm -rf "$HOME/bin/dsuk"
sed -i '/export PATH.*bin/d' "$HOME/.bashrc"
[ -f "$HOME/.zshrc" ] && sed -i '/export PATH.*bin/d' "$HOME/.zshrc"
[ -d "$HOME/bin" ] && rm -rf "$HOME/bin"
echo "✅ DSUK 已完全卸载"
kill -9 $$
}
# 执行命令函数
execute_command() {
local command="$1"
clear
echo -e "${BOLD}${COLORS[0]}执行命令:${NC}"
echo "----------------------------------------"
# DD系统确认提示
if [[ "$command" == *"InstallNET.sh"* ]]; then
echo -e "${COLORS[0]}⚠️ 警告:DD操作将重装系统,所有数据将丢失!${NC}"
read -p "确定要继续吗?(y/n): " confirm
[[ "$confirm" != "y" ]] && return
fi
eval "$command"
echo "----------------------------------------"
echo -e "${DIM}按任意键返回主菜单...${NC}"
read -n 1 -s
}
# 主函数
main() {
while true; do
show_menu
echo -n "请选择操作 [1-${#commands[@]}/q/u]: "
read -r choice
case "$choice" in
q|Q)
clear
exit 0
;;
u|U)
read -p "确定要卸载 DSUK 吗?(y/n): " confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
uninstall_dsuk
fi
;;
[0-9]*)
if [ "$choice" -ge 1 ] && [ "$choice" -le "${#commands[@]}" ]; then
IFS=':' read -r _ _ _ command <<< "${commands[$choice-1]}"
execute_command "$command"
else
echo "无效选择,请重试"
sleep 1
fi
;;
*)
echo "无效选择,请重试"
sleep 1
;;
esac
done
}
# 启动主程序
main
EOF
# 创建启动器脚本
cat > "$LAUNCHER_PATH" << EOF
#!/bin/bash
bash "$MENU_SCRIPT_PATH"
EOF
# 设置执行权限
chmod +x "$MENU_SCRIPT_PATH"
chmod +x "$LAUNCHER_PATH"
# 添加到 PATH(如果尚未添加)
if [[ ":$PATH:" != *":$SCRIPT_DIR:"* ]]; then
echo "export PATH=\"\$PATH:$SCRIPT_DIR\"" >> "$HOME/.bashrc"
# 如果存在 zsh,也添加到 zshrc
[ -f "$HOME/.zshrc" ] && echo "export PATH=\"\$PATH:$SCRIPT_DIR\"" >> "$HOME/.zshrc"
fi
echo "✅ DSUK 安装完成!"
echo "🚀 正在启动..."
sleep 1
# 在启动前确保文件存在
if [ -f "$MENU_SCRIPT_PATH" ]; then
bash "$MENU_SCRIPT_PATH"
else
echo "❌ 安装失败:无法创建必要文件,请检查权限"
exit 1
fi