DSUK Linux 工具集【自用】

2024 年 11 月 30 日 星期六(已编辑)
/
28

DSUK Linux 工具集【自用】

bash <(curl -Ls https://gemstar.eu.org/f/8Mtg/bash.sh)
image.png

image.png
#!/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

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...