From e2bbe1a478deb348bc32f25108b8a0a08368849f Mon Sep 17 00:00:00 2001 From: eddy Date: Sat, 1 Aug 2026 17:10:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=B2=BE=E7=AE=80=20VPS=20?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 Docker 管理、监控通知、后台工作区、防火墙及旧版 SSH 工具 - 删除废弃脚本、配置、本地化文件及 PandoraNext 文件 - 增加可配置的 GitHub Raw 地址,并根据服务器地区自动选择镜像 - 更新功能文档,使其与精简后的工具集保持一致 --- PandoraNext/config.json | 32 - PandoraNext/tokens.json | 17 - TG-SSH-check-notify.sh | 29 - TG-check-notify.sh | 100 -- app.md | 86 +- client_config | 54 - cn/kejilion.sh | 3574 ------------------------------------- custom_mysql_config-1.cnf | 0 kejilion.sh | 1344 +------------- optimized_php.ini | 1 - update_log.sh | 422 ----- upgrade_openssh9.8p1.sh | 154 -- 12 files changed, 62 insertions(+), 5751 deletions(-) delete mode 100644 PandoraNext/config.json delete mode 100644 PandoraNext/tokens.json delete mode 100644 TG-SSH-check-notify.sh delete mode 100644 TG-check-notify.sh delete mode 100644 client_config delete mode 100644 cn/kejilion.sh delete mode 100644 custom_mysql_config-1.cnf delete mode 100644 optimized_php.ini delete mode 100644 update_log.sh delete mode 100644 upgrade_openssh9.8p1.sh diff --git a/PandoraNext/config.json b/PandoraNext/config.json deleted file mode 100644 index 85a307c..0000000 --- a/PandoraNext/config.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "bind": "0.0.0.0:8181", - "tls": { - "enabled": false, - "cert_file": "", - "key_file": "" - }, - "timeout": 600, - "proxy_url": "", - "license_id": "github", - "public_share": false, - "site_password": "", - "setup_password": "webgptpasswd", - "server_tokens": true, - "proxy_api_prefix": "", - "isolated_conv_title": "*", - "disable_signup": false, - "auto_conv_arkose": false, - "proxy_file_service": false, - "custom_doh_host": "", - "captcha": { - "provider": "", - "site_key": "", - "site_secret": "", - "site_login": false, - "setup_login": false, - "oai_username": false, - "oai_password": false, - "oai_signup": false - }, - "whitelist": null -} diff --git a/PandoraNext/tokens.json b/PandoraNext/tokens.json deleted file mode 100644 index 8a7428e..0000000 --- a/PandoraNext/tokens.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "test-1": { - "token": "access token / session token / refresh token", - "shared": true, - "show_user_info": false - }, - "test-2": { - "token": "access token / session token / refresh token", - "shared": true, - "show_user_info": true, - "plus": true - }, - "test2": { - "token": "access token / session token / refresh token / share token / username & password", - "password": "12345" - } -} diff --git a/TG-SSH-check-notify.sh b/TG-SSH-check-notify.sh deleted file mode 100644 index bf9030b..0000000 --- a/TG-SSH-check-notify.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - - - - -# 获取登录信息 -country=$(curl -s ipinfo.io/$public_ip/country) -isp_info=$(curl -s ipinfo.io/org | sed -e 's/\"//g' | awk -F' ' '{print $2}') - -ipv4_address=$(curl -s ipv4.ip.sb) -masked_ip=$(echo $ipv4_address | awk -F'.' '{print "*."$3"."$4}') - - -IP=$(echo $SSH_CONNECTION | awk '{print $1}') -TIME=$(date +"%Y年%m月%d日 %H:%M:%S") -# 查询IP地址对应的地区信息 -#LOCATION=$(curl -s https://ipapi.co/$IP/json/ | jq -r '.city') - LOCATION=$(curl -s "http://opendata.baidu.com/api.php?query=$IP&co=&resource_id=6006&oe=utf8&format=json" | jq -r '.data[0].location') -# 获取当前用户名 - USERNAME=$(whoami) -# 发送Telegram消息 -MESSAGE="ℹ️ 登录信息: -登录机器:${isp_info}-${country}-${masked_ip} -登录名:$USERNAME -登录IP:$IP -登录时间:$TIME -登录地区:$LOCATION" - -curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID&text=$MESSAGE" > /dev/null 2>&1 \ No newline at end of file diff --git a/TG-check-notify.sh b/TG-check-notify.sh deleted file mode 100644 index 478affd..0000000 --- a/TG-check-notify.sh +++ /dev/null @@ -1,100 +0,0 @@ -#!/bin/bash - -# 你需要配置Telegram Bot Token和Chat ID -TELEGRAM_BOT_TOKEN="输入TG的机器人API" -CHAT_ID="输入TG的接收通知的账号ID" - - -# 你可以修改监控阈值设置 -CPU_THRESHOLD=70 -MEMORY_THRESHOLD=70 -DISK_THRESHOLD=70 -NETWORK_THRESHOLD_GB=1000 - - - -# 获取设备信息的变量 -country=$(curl -s ipinfo.io/$public_ip/country) -isp_info=$(curl -s ipinfo.io/org | sed -e 's/\"//g' | awk -F' ' '{print $2}') - -ipv4_address=$(curl -s ipv4.ip.sb) -masked_ip=$(echo $ipv4_address | awk -F'.' '{print "*."$3"."$4}') - -# 发送Telegram通知的函数 -send_tg_notification() { - local MESSAGE=$1 - curl -s -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" -d "chat_id=$CHAT_ID" -d "text=$MESSAGE" -} - - -# 获取CPU使用率 -get_cpu_usage() { - awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else printf "%.0f\n", (($2+$4-u1) * 100 / (t-t1))}' \ - <(grep 'cpu ' /proc/stat) <(sleep 1; grep 'cpu ' /proc/stat) -} - -# 获取内存使用率 -get_memory_usage() { - free | awk '/Mem/ {printf("%.0f"), $3/$2 * 100}' -} - -# 获取硬盘使用率 -get_disk_usage() { - df / | awk 'NR==2 {print $5}' | sed 's/%//' -} - -# 获取总的接收流量(字节数) -get_rx_bytes() { - awk 'BEGIN { rx_total = 0 } - NR > 2 { rx_total += $2 } - END { - printf("%.2f", rx_total / (1024 * 1024 * 1024)); - }' /proc/net/dev -} - -# 获取总的发送流量(字节数) -get_tx_bytes() { - awk 'BEGIN { tx_total = 0 } - NR > 2 { tx_total += $10 } - END { - printf("%.2f", tx_total / (1024 * 1024 * 1024)); - }' /proc/net/dev -} - -# 检查并发送通知 -check_and_notify() { - local USAGE=$1 - local TYPE=$2 - local THRESHOLD=$3 - local CURRENT_VALUE=$4 - - if (( $(echo "$USAGE > $THRESHOLD" | bc -l) )); then - send_tg_notification "警告: ${isp_info}-${country}-${masked_ip} 的 $TYPE 使用率已达到 $USAGE%,超过阈值 $THRESHOLD%。" - fi -} - -# 主循环 -while true; do - CPU_USAGE=$(get_cpu_usage) - MEMORY_USAGE=$(get_memory_usage) - DISK_USAGE=$(get_disk_usage) - RX_GB=$(get_rx_bytes) - TX_GB=$(get_tx_bytes) - - check_and_notify $CPU_USAGE "CPU" $CPU_THRESHOLD $CPU_USAGE - check_and_notify $MEMORY_USAGE "内存" $MEMORY_THRESHOLD $MEMORY_USAGE - check_and_notify $DISK_USAGE "硬盘" $DISK_THRESHOLD $DISK_USAGE - - # 检查入站流量是否超过阈值 - if (( $(echo "$RX_GB > $NETWORK_THRESHOLD_GB" | bc -l) )); then - send_tg_notification "警告: ${isp_info}-${country}-${masked_ip} 的入站流量已达到 ${RX_GB}GB,超过阈值 ${NETWORK_THRESHOLD_GB}GB。" - fi - - # 检查出站流量是否超过阈值 - if (( $(echo "$TX_GB > $NETWORK_THRESHOLD_GB" | bc -l) )); then - send_tg_notification "警告: ${isp_info}-${country}-${masked_ip} 的出站流量已达到 ${TX_GB}GB,超过阈值 ${NETWORK_THRESHOLD_GB}GB。" - fi - - # 休眠5分钟 - sleep 300 -done diff --git a/app.md b/app.md index e95fef8..1362f67 100644 --- a/app.md +++ b/app.md @@ -1,4 +1,4 @@ -本项目是一套面向 **Linux VPS 的交互式服务器管理脚本工具箱**,核心程序是 `kejilion.sh`。当前功能聚焦于系统管理、Docker 基础管理、网络测试与调优、安全防护、监控通知、后台工作区和 VPS 集群运维。 +本项目是一套面向 **Linux VPS 的交互式服务器管理脚本工具箱**,核心程序是 `kejilion.sh`。当前功能聚焦于系统管理、网络测试与调优、安全防护、流量限额控制和 VPS 集群运维。 ## 1. VPS 系统管理 @@ -6,30 +6,15 @@ - 查看操作系统、内核、主机名、IP、运营商和地理位置 - 查看 TCP 拥塞算法、系统时间及运行时长 - 更新系统、清理系统垃圾 -- 修改主机名、时区、DNS、登录密码和 SSH 端口 -- 管理 Swap、用户、sudo 权限和 Root 登录方式 +- 修改主机名、时区、DNS 和登录密码 +- 管理 Swap、用户和 sudo 权限 - IPv4/IPv6 优先级切换 - 查看端口占用 - 管理 `/etc/hosts` - 管理 Crontab 定时任务 - 重启服务器 -## 2. Docker 基础管理 - -- 安装、更新或卸载 Docker -- 查看 Docker、Compose 版本和资源占用 -- 创建、启动、停止、重启和删除容器 -- 批量管理全部容器 -- 进入容器终端、查看日志和容器网络 -- 拉取、更新及删除镜像 -- 创建和管理 Docker 网络 -- 创建和删除数据卷 -- 清理无用容器、镜像、网络和数据卷 -- 更换 Docker 软件源 -- 编辑 `daemon.json` -- 开启或关闭 Docker IPv6 - -## 3. 网络与 VPS 测试 +## 2. 网络与 VPS 测试 - WARP 管理 - ChatGPT 解锁测试 @@ -44,16 +29,15 @@ - Bench 综合测试 - 融合怪综合测评 -## 4. 网络加速与系统调优 +## 3. 网络加速与系统调优 - 开启或关闭 BBR - BBRv3/XanMod 内核管理 - 设置 Swap - 配置国内或国外 DNS -- 优化 SSH、时区和系统软件 -- 一键完成系统更新、清理、Docker 安装及常用配置 +- 优化时区和系统软件 -## 5. 安全防护 +## 4. 安全防护 ### SSH Fail2Ban @@ -64,33 +48,13 @@ 相关配置文件:`sshd.local` -### iptables 与账户安全 +### 账户安全 -- iptables 端口开放和关闭 -- IP 黑名单和白名单 -- 禁用 Root 并创建管理员用户 -- Root 密码或私钥登录管理 -- SSH 端口调整 -- OpenSSH 风险版本检测与升级 +- 用户管理 +- 用户和密码生成 +- 登录密码管理 -相关脚本:`upgrade_openssh9.8p1.sh` - -## 6. 服务器监控与通知 - -通过 Telegram Bot 发送: - -- CPU 使用率告警 -- 内存使用率告警 -- 磁盘使用率告警 -- 入站和出站流量告警 -- SSH 登录用户、来源 IP、地区和时间通知 - -相关文件: - -- `TG-check-notify.sh` -- `TG-SSH-check-notify.sh` - -## 7. 流量限额自动关机 +## 5. 流量限额自动关机 - 设置每月流量额度 - 定期统计接收和发送流量 @@ -100,32 +64,12 @@ 相关文件:`Limiting_Shut_down.sh` -## 8. 常用工具与后台工作区 - -可安装或管理: - -- curl、wget、sudo、socat -- htop、iftop、btop -- unzip、tar -- tmux -- ffmpeg -- ranger、gdu、fzf -- 一些终端小游戏 - -同时基于 tmux 提供: - -- 多个持久化后台工作区 -- 自定义工作区 -- 查看和删除工作区 -- SSH 断开后继续运行任务 - -## 9. VPS 集群批量管理 +## 6. VPS 集群批量管理 可以维护多台服务器列表,并批量执行: - 安装本项目脚本 - 更新或清理系统 -- 安装 Docker - 安装 BBR3 - 设置 Swap 和时区 - 开放端口 @@ -136,6 +80,6 @@ 总体而言,这个项目可以概括为: -> **VPS 系统管理 + Docker 基础管理 + 网络测试与调优 + SSH 安全防护 + 监控通知 + tmux 工作区 + 集群运维。** +> **VPS 系统管理 + 网络测试与调优 + SSH 安全防护 + 流量限额控制 + 集群运维。** -部分功能会在运行时从 GitHub、Docker Hub 或第三方站点下载脚本、配置和镜像,因此实际可用性取决于外部资源和目标 Linux 发行版。 \ No newline at end of file +部分功能会在运行时从 GitHub 或第三方站点下载脚本和配置,因此实际可用性取决于外部资源和目标 Linux 发行版。 \ No newline at end of file diff --git a/client_config b/client_config deleted file mode 100644 index 9c041b3..0000000 --- a/client_config +++ /dev/null @@ -1,54 +0,0 @@ -#在oci=begin和oci=end之间放入你的API配置信息 支持多个配置文件 机器人切换profile可更换操作配置 -oci=begin - -[DEFAULT] -user=ocid1.user.oc1..aaaaaaaaxxxxgwlg3xuzwgsaazxtzbozqq -fingerprint=b8:33:6f:xxxx:45:43:33 -tenancy=ocid1.tenancy.oc1..aaaaaaaaxxx7x7h4ya -region=ap-singapore-1 -key_file=写你的API密钥文件路径 - -[DEFAULT2] -user=ocid1.user.oc1..aaaaaaaaxxxxgwlg3xuzwgsaazxtzbozqq -fingerprint=b8:33:6f:xxxx:45:43:33 -tenancy=ocid1.tenancy.oc1..aaaaaaaaxxx7x7h4ya -region=ap-singapore-1 -key_file=写你的API密钥文件路径 - -oci=end - - - -#用户信息 从 https://t.me/radiance_helper_bot 配置(bot可使用/raninfo命令随机生成) -#必传 -username= -#必传 -password= - - -#cloudflare 功能参数 非必传 -#非必传 cloudflare邮箱 -cf_email= -#非必传 cloudflare key 在我的个人资料->API令牌处->API密钥->Global API Key 获取 -cf_account_key= - - -#非必填 本机ip和端口号 (进阶玩家选项 可填写域名) 不写将自动获取本机ip 并使用默认端口号9527 (小白用户建议不填) 如填写 格式为:https://xxx.xx:9527 -local_address= -#非必填 url名称(默认为address 可在bot上修改) -local_url_name= - -#非必填 启动模式 填写local为启动本地无公网IP模式(只要能联网即可) 不填或填其他 则启动端口模式 -model= - - - -#在azure=begin和azure=end之间放入你的azure的API配置信息 支持多个配置文件 机器人切换profile可更换操作配置 上传配置支持使用原格式({"appId":"xxx","password":"xxx"...})上传 -azure=begin - -[az001] -appId=551xxxx7-xxxx-xxxx-xxxx-b9xxxx60cc65 -password=T618Q~.LIy_xxxxx~jm~xxxxxx -tenant=xxxx3713-xxxx-4cb5-xxxx-3001060xxxxx - -azure=end \ No newline at end of file diff --git a/cn/kejilion.sh b/cn/kejilion.sh deleted file mode 100644 index 993510d..0000000 --- a/cn/kejilion.sh +++ /dev/null @@ -1,3574 +0,0 @@ -#!/bin/bash - -sh_v="2.6.6" - -huang='\033[33m' -bai='\033[0m' -lv='\033[0;32m' -lan='\033[0;34m' -hong='\033[31m' -kjlan='\033[96m' -hui='\e[37m' - -cp ./kejilion.sh /usr/local/bin/k > /dev/null 2>&1 - - - - -ip_address() { -ipv4_address=$(curl -s ipv4.ip.sb) -ipv6_address=$(curl -s --max-time 1 ipv6.ip.sb) -} - - - -install() { - if [ $# -eq 0 ]; then - echo "未提供软件包参数!" - return 1 - fi - - for package in "$@"; do - if ! command -v "$package" &>/dev/null; then - if command -v dnf &>/dev/null; then - dnf -y update && dnf install -y "$package" - elif command -v yum &>/dev/null; then - yum -y update && yum -y install "$package" - elif command -v apt &>/dev/null; then - apt update -y && apt install -y "$package" - elif command -v apk &>/dev/null; then - apk update && apk add "$package" - else - echo "未知的包管理器!" - return 1 - fi - fi - done - - return 0 -} - - -install_dependency() { - clear - install wget socat unzip tar -} - - -remove() { - if [ $# -eq 0 ]; then - echo "未提供软件包参数!" - return 1 - fi - - for package in "$@"; do - if command -v dnf &>/dev/null; then - dnf remove -y "${package}*" - elif command -v yum &>/dev/null; then - yum remove -y "${package}*" - elif command -v apt &>/dev/null; then - apt purge -y "${package}*" - elif command -v apk &>/dev/null; then - apk del "${package}*" - else - echo "未知的包管理器!" - return 1 - fi - done - - return 0 -} - - -break_end() { - echo -e "${lv}操作完成${bai}" - echo "按任意键继续..." - read -n 1 -s -r -p "" - echo "" - clear -} - -kejilion() { - k - exit -} - -install_add_docker() { - if [ -f "/etc/alpine-release" ]; then - apk update - apk add docker docker-compose - rc-update add docker default - service docker start - else - country=$(curl -s ipinfo.io/country) - if [ "$country" = "CN" ]; then - cd ~ - curl -sS -O https://raw.gitmirror.com/kejilion/docker/main/install && chmod +x install - sh install --mirror Aliyun - rm -f install - cat > /etc/docker/daemon.json << EOF -{ - "registry-mirrors": ["https://docker.kejilion.pro"] -} -EOF - else - curl -fsSL https://get.docker.com | sh - fi - systemctl start docker - systemctl enable docker - fi - - sleep 2 -} - - -install_docker() { - if ! command -v docker &>/dev/null; then - install_add_docker - else - echo "Docker环境已经安装" - fi -} - -docker_restart() { -if [ -f "/etc/alpine-release" ]; then - service docker restart -else - systemctl restart docker -fi - -} - -docker_ipv6_on() { -mkdir -p /etc/docker &>/dev/null - -cat > /etc/docker/daemon.json << EOF - -{ - "ipv6": true, - "fixed-cidr-v6": "2001:db8:1::/64" -} - -EOF - -docker_restart - -echo "Docker已开启v6访问" - -} - - -docker_ipv6_off() { - -rm -rf etc/docker/daemon.json &>/dev/null - -docker_restart - -echo "Docker已关闭v6访问" - -} - - - - - -iptables_open() { - iptables -P INPUT ACCEPT - iptables -P FORWARD ACCEPT - iptables -P OUTPUT ACCEPT - iptables -F - - ip6tables -P INPUT ACCEPT - ip6tables -P FORWARD ACCEPT - ip6tables -P OUTPUT ACCEPT - ip6tables -F - -} - - - -add_swap() { - # 获取当前系统中所有的 swap 分区 - swap_partitions=$(grep -E '^/dev/' /proc/swaps | awk '{print $1}') - - # 遍历并删除所有的 swap 分区 - for partition in $swap_partitions; do - swapoff "$partition" - wipefs -a "$partition" # 清除文件系统标识符 - mkswap -f "$partition" - done - - # 确保 /swapfile 不再被使用 - swapoff /swapfile - - # 删除旧的 /swapfile - rm -f /swapfile - - # 创建新的 swap 分区 - dd if=/dev/zero of=/swapfile bs=1M count=$new_swap - chmod 600 /swapfile - mkswap /swapfile - swapon /swapfile - - if [ -f /etc/alpine-release ]; then - echo "/swapfile swap swap defaults 0 0" >> /etc/fstab - echo "nohup swapon /swapfile" >> /etc/local.d/swap.start - chmod +x /etc/local.d/swap.start - rc-update add local - else - echo "/swapfile swap swap defaults 0 0" >> /etc/fstab - fi - - echo -e "虚拟内存大小已调整为${huang}${new_swap}${bai}MB" -} - -cluster_python3() { - cd ~/cluster/ - curl -sS -O https://raw.gitmirror.com/kejilion/python-for-vps/main/cluster/$py_task - python3 ~/cluster/$py_task -} - -tmux_run() { - # Check if the session already exists - tmux has-session -t $SESSION_NAME 2>/dev/null - # $? is a special variable that holds the exit status of the last executed command - if [ $? != 0 ]; then - # Session doesn't exist, create a new one - tmux new -s $SESSION_NAME - else - # Session exists, attach to it - tmux attach-session -t $SESSION_NAME - fi -} - - -f2b_status() { - docker restart fail2ban - sleep 3 - docker exec -it fail2ban fail2ban-client status -} - -f2b_status_xxx() { - docker exec -it fail2ban fail2ban-client status $xxx -} - -f2b_install_sshd() { - - docker run -d \ - --name=fail2ban \ - --net=host \ - --cap-add=NET_ADMIN \ - --cap-add=NET_RAW \ - -e PUID=1000 \ - -e PGID=1000 \ - -e TZ=Etc/UTC \ - -e VERBOSITY=-vv \ - -v /path/to/fail2ban/config:/config \ - -v /var/log:/var/log:ro \ - --restart unless-stopped \ - lscr.io/linuxserver/fail2ban:latest - - sleep 3 - if grep -q 'Alpine' /etc/issue; then - cd /path/to/fail2ban/config/fail2ban/filter.d - curl -sS -O https://raw.gitmirror.com/kejilion/config/main/fail2ban/alpine-sshd.conf - curl -sS -O https://raw.gitmirror.com/kejilion/config/main/fail2ban/alpine-sshd-ddos.conf - cd /path/to/fail2ban/config/fail2ban/jail.d/ - curl -sS -O https://raw.gitmirror.com/kejilion/config/main/fail2ban/alpine-ssh.conf - elif grep -qi 'CentOS' /etc/redhat-release; then - cd /path/to/fail2ban/config/fail2ban/jail.d/ - curl -sS -O https://raw.gitmirror.com/kejilion/config/main/fail2ban/centos-ssh.conf - else - install rsyslog - systemctl start rsyslog - systemctl enable rsyslog - cd /path/to/fail2ban/config/fail2ban/jail.d/ - curl -sS -O https://raw.gitmirror.com/kejilion/config/main/fail2ban/linux-ssh.conf - fi -} - -f2b_sshd() { - if grep -q 'Alpine' /etc/issue; then - xxx=alpine-sshd - f2b_status_xxx - elif grep -qi 'CentOS' /etc/redhat-release; then - xxx=centos-sshd - f2b_status_xxx - else - xxx=linux-sshd - f2b_status_xxx - fi -} - - - - - - -server_reboot() { - - read -p "$(echo -e "${huang}现在重启服务器吗?(Y/N): ${bai}")" rboot - case "$rboot" in - [Yy]) - echo "已重启" - reboot - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - -} - -output_status() { - output=$(awk 'BEGIN { rx_total = 0; tx_total = 0 } - NR > 2 { rx_total += $2; tx_total += $10 } - END { - rx_units = "Bytes"; - tx_units = "Bytes"; - if (rx_total > 1024) { rx_total /= 1024; rx_units = "KB"; } - if (rx_total > 1024) { rx_total /= 1024; rx_units = "MB"; } - if (rx_total > 1024) { rx_total /= 1024; rx_units = "GB"; } - - if (tx_total > 1024) { tx_total /= 1024; tx_units = "KB"; } - if (tx_total > 1024) { tx_total /= 1024; tx_units = "MB"; } - if (tx_total > 1024) { tx_total /= 1024; tx_units = "GB"; } - - printf("总接收: %.2f %s\n总发送: %.2f %s\n", rx_total, rx_units, tx_total, tx_units); - }' /proc/net/dev) - -} - - -current_timezone() { - if grep -q 'Alpine' /etc/issue; then - date +"%Z %z" - else - timedatectl | grep "Time zone" | awk '{print $3}' - fi - -} - - -set_timedate() { - shiqu="$1" - if grep -q 'Alpine' /etc/issue; then - install tzdata - cp /usr/share/zoneinfo/${shiqu} /etc/localtime - hwclock --systohc - else - timedatectl set-timezone ${shiqu} - fi -} - - - - -linux_update() { - if command -v dnf &>/dev/null; then - dnf -y update - elif command -v yum &>/dev/null; then - yum -y update - elif command -v apt &>/dev/null; then - DEBIAN_FRONTEND=noninteractive apt update -y - DEBIAN_FRONTEND=noninteractive apt full-upgrade -y - elif command -v apk &>/dev/null; then - apk update && apk upgrade - else - echo "未知的包管理器!" - return 1 - fi -} - - - -linux_clean() { - if command -v dnf &>/dev/null; then - dnf autoremove -y - dnf clean all - journalctl --rotate - journalctl --vacuum-time=1s - journalctl --vacuum-size=50M - dnf remove $(dnf repoquery --installonly --latest-limit=-1 -q) -y - elif command -v yum &>/dev/null; then - yum autoremove -y - yum clean all - journalctl --rotate - journalctl --vacuum-time=1s - journalctl --vacuum-size=50M - yum remove $(rpm -q kernel | grep -v $(uname -r)) -y - elif command -v apt &>/dev/null; then - apt autoremove --purge -y - apt clean -y - apt autoclean -y - apt remove --purge $(dpkg -l | awk '/^rc/ {print $2}') -y - journalctl --rotate - journalctl --vacuum-time=1s - journalctl --vacuum-size=50M - apt remove --purge $(dpkg -l | awk '/^ii linux-(image|headers)-[^ ]+/{print $2}' | grep -v $(uname -r | sed 's/-.*//') | xargs) -y - elif command -v apk &>/dev/null; then - apk del --purge $(apk info --installed | awk '{print $1}' | grep -v $(apk info --available | awk '{print $1}')) - apk autoremove - apk cache clean - rm -rf /var/log/* - rm -rf /var/cache/apk/* - else - echo "未知的包管理器!" - return 1 - fi - -} - - - - -bbr_on() { - -cat > /etc/sysctl.conf << EOF -net.core.default_qdisc=fq_pie -net.ipv4.tcp_congestion_control=bbr -EOF -sysctl -p - -} - - -set_dns() { - -# 检查机器是否有IPv6地址 -ipv6_available=0 -if [[ $(ip -6 addr | grep -c "inet6") -gt 0 ]]; then - ipv6_available=1 -fi - -echo "nameserver $dns1_ipv4" > /etc/resolv.conf -echo "nameserver $dns2_ipv4" >> /etc/resolv.conf - - -if [[ $ipv6_available -eq 1 ]]; then - echo "nameserver $dns1_ipv6" >> /etc/resolv.conf - echo "nameserver $dns2_ipv6" >> /etc/resolv.conf -fi - -echo "DNS地址已更新" -echo "------------------------" -cat /etc/resolv.conf -echo "------------------------" - -} - - -restart_ssh() { - -if command -v dnf &>/dev/null; then - systemctl restart sshd -elif command -v yum &>/dev/null; then - systemctl restart sshd -elif command -v apt &>/dev/null; then - service ssh restart -elif command -v apk &>/dev/null; then - service sshd restart -else - echo "未知的包管理器!" - return 1 -fi - -} - - -new_ssh_port() { - - - # 备份 SSH 配置文件 - cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - - sed -i 's/^\s*#\?\s*Port/Port/' /etc/ssh/sshd_config - - # 替换 SSH 配置文件中的端口号 - sed -i "s/Port [0-9]\+/Port $new_port/g" /etc/ssh/sshd_config - - rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/* - - # 重启 SSH 服务 - restart_ssh - echo "SSH 端口已修改为: $new_port" - - iptables_open - remove iptables-persistent ufw firewalld iptables-services > /dev/null 2>&1 - -} - - - -add_sshkey() { - -# ssh-keygen -t rsa -b 4096 -C "xxxx@gmail.com" -f /root/.ssh/sshkey -N "" -ssh-keygen -t ed25519 -C "xxxx@gmail.com" -f /root/.ssh/sshkey -N "" - -cat ~/.ssh/sshkey.pub >> ~/.ssh/authorized_keys -chmod 600 ~/.ssh/authorized_keys - - -ip_address -echo -e "私钥信息已生成,务必复制保存,可保存成 ${huang}${ipv4_address}_ssh.key${bai} 文件,用于以后的SSH登录" - -echo "--------------------------------" -cat ~/.ssh/sshkey -echo "--------------------------------" - -sed -i -e 's/^\s*#\?\s*PermitRootLogin .*/PermitRootLogin prohibit-password/' \ - -e 's/^\s*#\?\s*PasswordAuthentication .*/PasswordAuthentication no/' \ - -e 's/^\s*#\?\s*PubkeyAuthentication .*/PubkeyAuthentication yes/' \ - -e 's/^\s*#\?\s*ChallengeResponseAuthentication .*/ChallengeResponseAuthentication no/' /etc/ssh/sshd_config -rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/* -echo -e "${lv}ROOT私钥登录已开启,已关闭ROOT密码登录,重连将会生效${bai}" - -} - - -add_sshpasswd() { - -echo "设置你的ROOT密码" -passwd -sed -i 's/^\s*#\?\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config; -sed -i 's/^\s*#\?\s*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config; -rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/* -restart_ssh -echo -e "${lv}ROOT登录设置完毕!${bai}" - -} - - -root_use() { -clear -[ "$EUID" -ne 0 ] && echo -e "${huang}请注意,该功能需要root用户才能运行!${bai}" && break_end && kejilion -} - - - - -while true; do -clear - -echo -e "${kjlan}_ _ ____ _ _ _ _ ____ _ _ " -echo "|_/ |___ | | | | | | |\ | " -echo "| \_ |___ _| | |___ | |__| | \| " -echo " " -echo -e "${kjlan}科技lion一键脚本工具 v$sh_v (支持Ubuntu/Debian/CentOS/Alpine系统)${bai}" -echo -e "${kjlan}-输入${huang}k${kjlan}可快速启动此脚本-${bai}" -echo "------------------------" -echo "1. 系统信息查询" -echo "2. 系统更新" -echo "3. 系统清理" -echo "4. 常用工具 ▶" -echo "5. BBR管理 ▶" -echo "6. Docker管理 ▶ " -echo "7. WARP管理 ▶ " -echo "8. 测试脚本合集 ▶ " -echo "12. 我的工作区 ▶ " -echo "13. 系统工具 ▶ " -echo "14. VPS集群控制 ▶ " -echo "------------------------" -echo "00. 脚本更新" -echo "------------------------" -echo "0. 退出脚本" -echo "------------------------" -read -p "请输入你的选择: " choice - -case $choice in - 1) - clear - # 函数: 获取IPv4和IPv6地址 - ip_address - - if [ "$(uname -m)" == "x86_64" ]; then - cpu_info=$(cat /proc/cpuinfo | grep 'model name' | uniq | sed -e 's/model name[[:space:]]*: //') - else - cpu_info=$(lscpu | grep 'BIOS Model name' | awk -F': ' '{print $2}' | sed 's/^[ \t]*//') - fi - - - cpu_usage_percent=$(awk '{u=$2+$4; t=$2+$4+$5; if (NR==1){u1=u; t1=t;} else printf "%.0f\n", (($2+$4-u1) * 100 / (t-t1))}' \ - <(grep 'cpu ' /proc/stat) <(sleep 1; grep 'cpu ' /proc/stat)) - - - cpu_cores=$(nproc) - - mem_info=$(free -b | awk 'NR==2{printf "%.2f/%.2f MB (%.2f%%)", $3/1024/1024, $2/1024/1024, $3*100/$2}') - - disk_info=$(df -h | awk '$NF=="/"{printf "%s/%s (%s)", $3, $2, $5}') - - country=$(curl -s ipinfo.io/country) - city=$(curl -s ipinfo.io/city) - - isp_info=$(curl -s ipinfo.io/org) - - cpu_arch=$(uname -m) - - hostname=$(hostname) - - kernel_version=$(uname -r) - - congestion_algorithm=$(sysctl -n net.ipv4.tcp_congestion_control) - queue_algorithm=$(sysctl -n net.core.default_qdisc) - - # 尝试使用 lsb_release 获取系统信息 - os_info=$(lsb_release -ds 2>/dev/null) - - # 如果 lsb_release 命令失败,则尝试其他方法 - if [ -z "$os_info" ]; then - # 检查常见的发行文件 - if [ -f "/etc/os-release" ]; then - os_info=$(source /etc/os-release && echo "$PRETTY_NAME") - elif [ -f "/etc/debian_version" ]; then - os_info="Debian $(cat /etc/debian_version)" - elif [ -f "/etc/redhat-release" ]; then - os_info=$(cat /etc/redhat-release) - else - os_info="Unknown" - fi - fi - - output_status - - current_time=$(date "+%Y-%m-%d %I:%M %p") - - - swap_used=$(free -m | awk 'NR==3{print $3}') - swap_total=$(free -m | awk 'NR==3{print $2}') - - if [ "$swap_total" -eq 0 ]; then - swap_percentage=0 - else - swap_percentage=$((swap_used * 100 / swap_total)) - fi - - swap_info="${swap_used}MB/${swap_total}MB (${swap_percentage}%)" - - runtime=$(cat /proc/uptime | awk -F. '{run_days=int($1 / 86400);run_hours=int(($1 % 86400) / 3600);run_minutes=int(($1 % 3600) / 60); if (run_days > 0) printf("%d天 ", run_days); if (run_hours > 0) printf("%d时 ", run_hours); printf("%d分\n", run_minutes)}') - - timezone=$(current_timezone) - - - echo "" - echo "系统信息查询" - echo "------------------------" - echo "主机名: $hostname" - echo "运营商: $isp_info" - echo "------------------------" - echo "系统版本: $os_info" - echo "Linux版本: $kernel_version" - echo "------------------------" - echo "CPU架构: $cpu_arch" - echo "CPU型号: $cpu_info" - echo "CPU核心数: $cpu_cores" - echo "------------------------" - echo "CPU占用: $cpu_usage_percent%" - echo "物理内存: $mem_info" - echo "虚拟内存: $swap_info" - echo "硬盘占用: $disk_info" - echo "------------------------" - echo "$output" - echo "------------------------" - echo "网络拥堵算法: $congestion_algorithm $queue_algorithm" - echo "------------------------" - echo "公网IPv4地址: $ipv4_address" - echo "公网IPv6地址: $ipv6_address" - echo "------------------------" - echo "地理位置: $country $city" - echo "系统时区: $timezone" - echo "系统时间: $current_time" - echo "------------------------" - echo "系统运行时长: $runtime" - echo - - ;; - - 2) - clear - linux_update - ;; - - 3) - clear - linux_clean - ;; - - 4) - while true; do - clear - echo "▶ 安装常用工具" - echo "------------------------" - echo "1. curl 下载工具" - echo "2. wget 下载工具" - echo "3. sudo 超级管理权限工具" - echo "4. socat 通信连接工具" - echo "5. htop 系统监控工具" - echo "6. iftop 网络流量监控工具" - echo "7. unzip ZIP压缩解压工具" - echo "8. tar GZ压缩解压工具" - echo "9. tmux 多路后台运行工具" - echo "10. ffmpeg 视频编码直播推流工具" - echo "11. btop 现代化监控工具" - echo "12. ranger 文件管理工具" - echo "13. gdu 磁盘占用查看工具" - echo "14. fzf 全局搜索工具" - echo "------------------------" - echo "21. cmatrix 黑客帝国屏保" - echo "22. sl 跑火车屏保" - echo "------------------------" - echo "26. 俄罗斯方块小游戏" - echo "27. 贪吃蛇小游戏" - echo "28. 太空入侵者小游戏" - echo "------------------------" - echo "31. 全部安装" - echo "32. 全部卸载" - echo "------------------------" - echo "41. 安装指定工具" - echo "42. 卸载指定工具" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - install curl - clear - echo "工具已安装,使用方法如下:" - curl --help - ;; - 2) - clear - install wget - clear - echo "工具已安装,使用方法如下:" - wget --help - ;; - 3) - clear - install sudo - clear - echo "工具已安装,使用方法如下:" - sudo --help - ;; - 4) - clear - install socat - clear - echo "工具已安装,使用方法如下:" - socat -h - ;; - 5) - clear - install htop - clear - htop - ;; - 6) - clear - install iftop - clear - iftop - ;; - 7) - clear - install unzip - clear - echo "工具已安装,使用方法如下:" - unzip - ;; - 8) - clear - install tar - clear - echo "工具已安装,使用方法如下:" - tar --help - ;; - 9) - clear - install tmux - clear - echo "工具已安装,使用方法如下:" - tmux --help - ;; - 10) - clear - install ffmpeg - clear - echo "工具已安装,使用方法如下:" - ffmpeg --help - ;; - - 11) - clear - install btop - clear - btop - ;; - 12) - clear - install ranger - cd / - clear - ranger - cd ~ - ;; - 13) - clear - install gdu - cd / - clear - gdu - cd ~ - ;; - 14) - clear - install fzf - cd / - clear - fzf - cd ~ - ;; - - 21) - clear - install cmatrix - clear - cmatrix - ;; - 22) - clear - install sl - clear - /usr/games/sl - ;; - 26) - clear - install bastet - clear - /usr/games/bastet - ;; - 27) - clear - install nsnake - clear - /usr/games/nsnake - ;; - 28) - clear - install ninvaders - clear - /usr/games/ninvaders - - ;; - - 31) - clear - install curl wget sudo socat htop iftop unzip tar tmux ffmpeg btop ranger gdu fzf cmatrix sl bastet nsnake ninvaders - ;; - - 32) - clear - remove htop iftop unzip tmux ffmpeg btop ranger gdu fzf cmatrix sl bastet nsnake ninvaders - ;; - - 41) - clear - read -p "请输入安装的工具名(wget curl sudo htop): " installname - install $installname - ;; - 42) - clear - read -p "请输入卸载的工具名(htop ufw tmux cmatrix): " removename - remove $removename - ;; - - 0) - kejilion - - ;; - - *) - echo "无效的输入!" - ;; - esac - break_end - done - - ;; - - 5) - clear - if [ -f "/etc/alpine-release" ]; then - while true; do - clear - congestion_algorithm=$(sysctl -n net.ipv4.tcp_congestion_control) - queue_algorithm=$(sysctl -n net.core.default_qdisc) - echo "当前TCP阻塞算法: $congestion_algorithm $queue_algorithm" - - echo "" - echo "BBR管理" - echo "------------------------" - echo "1. 开启BBRv3 2. 关闭BBRv3(会重启)" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - bbr_on - - ;; - 2) - sed -i '/net.core.default_qdisc=fq_pie/d' /etc/sysctl.conf - sed -i '/net.ipv4.tcp_congestion_control=bbr/d' /etc/sysctl.conf - sysctl -p - reboot - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - - esac - done - else - install wget - wget --no-check-certificate -O tcpx.sh https://raw.gitmirror.com/ylx2016/Linux-NetSpeed/master/tcpx.sh - chmod +x tcpx.sh - ./tcpx.sh - fi - - ;; - - 6) - while true; do - clear - echo "▶ Docker管理器" - echo "------------------------" - echo "1. 安装更新Docker环境" - echo "------------------------" - echo "2. 查看Docker全局状态" - echo "------------------------" - echo "3. Docker容器管理 ▶" - echo "4. Docker镜像管理 ▶" - echo "5. Docker网络管理 ▶" - echo "6. Docker卷管理 ▶" - echo "------------------------" - echo "7. 清理无用的docker容器和镜像网络数据卷" - echo "------------------------" - echo "8. 更换Docker源" - echo "9. 编辑daemon.json文件" - echo "------------------------" - echo "11. 开启Docker-ipv6访问" - echo "12. 关闭Docker-ipv6访问" - echo "------------------------" - echo "20. 卸载Docker环境" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - install_add_docker - - ;; - 2) - clear - echo "Docker版本" - docker -v - docker compose version - - echo "" - echo "Docker镜像列表" - docker image ls - echo "" - echo "Docker容器列表" - docker ps -a - echo "" - echo "Docker卷列表" - docker volume ls - echo "" - echo "Docker网络列表" - docker network ls - echo "" - - ;; - 3) - while true; do - clear - echo "Docker容器列表" - docker ps -a - echo "" - echo "容器操作" - echo "------------------------" - echo "1. 创建新的容器" - echo "------------------------" - echo "2. 启动指定容器 6. 启动所有容器" - echo "3. 停止指定容器 7. 暂停所有容器" - echo "4. 删除指定容器 8. 删除所有容器" - echo "5. 重启指定容器 9. 重启所有容器" - echo "------------------------" - echo "11. 进入指定容器 12. 查看容器日志 13. 查看容器网络" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入创建命令: " dockername - $dockername - ;; - - 2) - read -p "请输入容器名: " dockername - docker start $dockername - ;; - 3) - read -p "请输入容器名: " dockername - docker stop $dockername - ;; - 4) - read -p "请输入容器名: " dockername - docker rm -f $dockername - ;; - 5) - read -p "请输入容器名: " dockername - docker restart $dockername - ;; - 6) - docker start $(docker ps -a -q) - ;; - 7) - docker stop $(docker ps -q) - ;; - 8) - read -p "$(echo -e "${hong}确定删除所有容器吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker rm -f $(docker ps -a -q) - ;; - [Nn]) - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - 9) - docker restart $(docker ps -q) - ;; - 11) - read -p "请输入容器名: " dockername - docker exec -it $dockername /bin/sh - break_end - ;; - 12) - read -p "请输入容器名: " dockername - docker logs $dockername - break_end - ;; - 13) - echo "" - container_ids=$(docker ps -q) - - echo "------------------------------------------------------------" - printf "%-25s %-25s %-25s\n" "容器名称" "网络名称" "IP地址" - - for container_id in $container_ids; do - container_info=$(docker inspect --format '{{ .Name }}{{ range $network, $config := .NetworkSettings.Networks }} {{ $network }} {{ $config.IPAddress }}{{ end }}' "$container_id") - - container_name=$(echo "$container_info" | awk '{print $1}') - network_info=$(echo "$container_info" | cut -d' ' -f2-) - - while IFS= read -r line; do - network_name=$(echo "$line" | awk '{print $1}') - ip_address=$(echo "$line" | awk '{print $2}') - - printf "%-20s %-20s %-15s\n" "$container_name" "$network_name" "$ip_address" - done <<< "$network_info" - done - - break_end - ;; - - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - 4) - while true; do - clear - echo "Docker镜像列表" - docker image ls - echo "" - echo "镜像操作" - echo "------------------------" - echo "1. 获取指定镜像 3. 删除指定镜像" - echo "2. 更新指定镜像 4. 删除所有镜像" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入镜像名: " dockername - docker pull $dockername - ;; - 2) - read -p "请输入镜像名: " dockername - docker pull $dockername - ;; - 3) - read -p "请输入镜像名: " dockername - docker rmi -f $dockername - ;; - 4) - read -p "$(echo -e "${hong}确定删除所有镜像吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker rmi -f $(docker images -q) - ;; - [Nn]) - - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - - 5) - while true; do - clear - echo "Docker网络列表" - echo "------------------------------------------------------------" - docker network ls - echo "" - - echo "------------------------------------------------------------" - container_ids=$(docker ps -q) - printf "%-25s %-25s %-25s\n" "容器名称" "网络名称" "IP地址" - - for container_id in $container_ids; do - container_info=$(docker inspect --format '{{ .Name }}{{ range $network, $config := .NetworkSettings.Networks }} {{ $network }} {{ $config.IPAddress }}{{ end }}' "$container_id") - - container_name=$(echo "$container_info" | awk '{print $1}') - network_info=$(echo "$container_info" | cut -d' ' -f2-) - - while IFS= read -r line; do - network_name=$(echo "$line" | awk '{print $1}') - ip_address=$(echo "$line" | awk '{print $2}') - - printf "%-20s %-20s %-15s\n" "$container_name" "$network_name" "$ip_address" - done <<< "$network_info" - done - - echo "" - echo "网络操作" - echo "------------------------" - echo "1. 创建网络" - echo "2. 加入网络" - echo "3. 退出网络" - echo "4. 删除网络" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "设置新网络名: " dockernetwork - docker network create $dockernetwork - ;; - 2) - read -p "加入网络名: " dockernetwork - read -p "那些容器加入该网络: " dockername - docker network connect $dockernetwork $dockername - echo "" - ;; - 3) - read -p "退出网络名: " dockernetwork - read -p "那些容器退出该网络: " dockername - docker network disconnect $dockernetwork $dockername - echo "" - ;; - - 4) - read -p "请输入要删除的网络名: " dockernetwork - docker network rm $dockernetwork - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - - 6) - while true; do - clear - echo "Docker卷列表" - docker volume ls - echo "" - echo "卷操作" - echo "------------------------" - echo "1. 创建新卷" - echo "2. 删除卷" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "设置新卷名: " dockerjuan - docker volume create $dockerjuan - - ;; - 2) - read -p "输入删除卷名: " dockerjuan - docker volume rm $dockerjuan - - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - 7) - clear - read -p "$(echo -e "${huang}确定清理无用的镜像容器网络吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker system prune -af --volumes - ;; - [Nn]) - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - 8) - clear - bash <(curl -sSL https://linuxmirrors.cn/docker.sh) - ;; - - 9) - clear - install nano - mkdir -p /etc/docker && nano /etc/docker/daemon.json - if command -v dnf &>/dev/null || command -v yum &>/dev/null; then - systemctl restart docker - else - service docker restart - fi - ;; - - 11) - clear - docker_ipv6_on - ;; - - 12) - clear - docker_ipv6_off - ;; - - 20) - clear - read -p "$(echo -e "${hong}确定卸载docker环境吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker rm $(docker ps -a -q) && docker rmi $(docker images -q) && docker network prune - remove docker > /dev/null 2>&1 - ;; - [Nn]) - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - - 0) - kejilion - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - - done - - ;; - - - 7) - clear - install wget - wget -N https://gitlab.com/fscarmen/warp/-/raw/main/menu.sh && bash menu.sh [option] [lisence/url/token] - ;; - - 8) - while true; do - clear - echo "▶ 测试脚本合集" - echo "" - echo "----IP及解锁状态检测-----------" - echo "1. ChatGPT解锁状态检测" - echo "2. Region流媒体解锁测试" - echo "3. yeahwu流媒体解锁检测" - echo "4. xykt_IP质量体检脚本" - echo "" - echo "----网络线路测速-----------" - echo "11. besttrace三网回程延迟路由测试" - echo "12. mtr_trace三网回程线路测试" - echo "13. Superspeed三网测速" - echo "14. nxtrace快速回程测试脚本" - echo "15. nxtrace指定IP回程测试脚本" - echo "16. ludashi2020三网线路测试" - echo "17. i-abc多功能测速脚本" - echo "" - echo "----硬件性能测试----------" - echo "21. yabs性能测试" - echo "22. icu/gb5 CPU性能测试脚本" - echo "" - echo "----综合性测试-----------" - echo "31. bench性能测试" - echo "32. spiritysdx融合怪测评" - echo "" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - bash <(curl -Ls https://cdn.jsdelivr.net/gh/missuo/OpenAI-Checker/openai.sh) - ;; - 2) - clear - bash <(curl -L -s check.unlock.media) - ;; - 3) - clear - install wget - wget -qO- https://hub.gitmirror.com/https://github.com/yeahwu/check/raw/main/check.sh | bash - ;; - 4) - clear - bash <(curl -Ls IP.Check.Place) - ;; - 11) - clear - install wget - wget -qO- git.io/besttrace | bash - ;; - 12) - clear - curl https://raw.gitmirror.com/zhucaidan/mtr_trace/main/mtr_trace.sh | bash - ;; - 13) - clear - bash <(curl -Lso- https://git.io/superspeed_uxh) - ;; - 14) - clear - curl nxtrace.org/nt |bash - nexttrace --fast-trace --tcp - ;; - 15) - clear - - echo "可参考的IP列表" - echo "------------------------" - echo "北京电信: 219.141.136.12" - echo "北京联通: 202.106.50.1" - echo "北京移动: 221.179.155.161" - echo "上海电信: 202.96.209.133" - echo "上海联通: 210.22.97.1" - echo "上海移动: 211.136.112.200" - echo "广州电信: 58.60.188.222" - echo "广州联通: 210.21.196.6" - echo "广州移动: 120.196.165.24" - echo "成都电信: 61.139.2.69" - echo "成都联通: 119.6.6.6" - echo "成都移动: 211.137.96.205" - echo "湖南电信: 36.111.200.100" - echo "湖南联通: 42.48.16.100" - echo "湖南移动: 39.134.254.6" - echo "------------------------" - - read -p "输入一个指定IP: " testip - curl nxtrace.org/nt |bash - nexttrace $testip - ;; - - 16) - clear - curl https://raw.gitmirror.com/ludashi2020/backtrace/main/install.sh -sSf | sh - ;; - - 17) - clear - bash <(curl -sL bash.icu/speedtest) - ;; - - - 21) - clear - new_swap=1024 - add_swap - curl -sL yabs.sh | bash -s -- -i -5 - ;; - 22) - clear - new_swap=1024 - add_swap - bash <(curl -sL bash.icu/gb5) - ;; - - 31) - clear - curl -Lso- bench.sh | bash - ;; - 32) - clear - curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh - ;; - - - 0) - kejilion - - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - done - ;; - - 12) - while true; do - clear - echo "▶ 我的工作区" - echo "系统将为你提供可以后台常驻运行的工作区,你可以用来执行长时间的任务" - echo "即使你断开SSH,工作区中的任务也不会中断,后台常驻任务。" - echo -e "${huang}注意: 进入工作区后使用Ctrl+b再单独按d,退出工作区!${bai}" - echo "------------------------" - echo "1. 1号工作区" - echo "2. 2号工作区" - echo "3. 3号工作区" - echo "4. 4号工作区" - echo "5. 5号工作区" - echo "6. 6号工作区" - echo "7. 7号工作区" - echo "8. 8号工作区" - echo "9. 9号工作区" - echo "10. 10号工作区" - echo "11. 自定义工作区" - echo "------------------------" - echo "99. 工作区状态管理" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - - 1) - clear - install tmux - SESSION_NAME="work1" - tmux_run - - ;; - 2) - clear - install tmux - SESSION_NAME="work2" - tmux_run - ;; - 3) - clear - install tmux - SESSION_NAME="work3" - tmux_run - ;; - 4) - clear - install tmux - SESSION_NAME="work4" - tmux_run - ;; - 5) - clear - install tmux - SESSION_NAME="work5" - tmux_run - ;; - 6) - clear - install tmux - SESSION_NAME="work6" - tmux_run - ;; - 7) - clear - install tmux - SESSION_NAME="work7" - tmux_run - ;; - 8) - clear - install tmux - SESSION_NAME="work8" - tmux_run - ;; - 9) - clear - install tmux - SESSION_NAME="work9" - tmux_run - ;; - 10) - clear - install tmux - SESSION_NAME="work10" - tmux_run - ;; - - 11) - clear - install tmux - clear - echo "当前已存在的工作区列表" - echo "------------------------" - tmux list-sessions - echo "------------------------" - read -p "请输入您自定义的工作区名称,如1001 kj001 work10: " SESSION_NAME - tmux_run - ;; - - 99) - while true; do - clear - echo "当前已存在的工作区列表" - echo "------------------------" - tmux list-sessions - echo "------------------------" - - read -p "1. 删除指定工作区 0. 退出: " gongzuoqu_del - case "$gongzuoqu_del" in - 1) - read -p "请输入要删除的工作区名称: " gongzuoqu_name - tmux kill-window -t $gongzuoqu_name - ;; - 0) - break - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - done - - ;; - 0) - kejilion - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - done - ;; - - 13) - while true; do - clear - echo "▶ 系统工具" - echo "------------------------" - echo "1. 设置脚本启动快捷键 2. 修改登录密码" - echo "3. ROOT密码登录模式 4. 安装Python指定版本" - echo "5. 开放所有端口 6. 修改SSH连接端口" - echo "7. 优化DNS地址 8. 一键重装系统" - echo "9. 禁用ROOT账户创建新账户 10. 切换优先ipv4/ipv6" - echo "------------------------" - echo "11. 查看端口占用状态 12. 修改虚拟内存大小" - echo "13. 用户管理 14. 用户/密码生成器" - echo "15. 系统时区调整 16. 设置BBR3加速" - echo "17. 防火墙高级管理器 18. 修改主机名" - echo "19. 切换系统更新源 20. 定时任务管理" - echo "------------------------" - echo "21. 本机host解析 22. fail2banSSH防御程序" - echo "23. 限流自动关机 24. ROOT私钥登录模式" - echo "25. TG-bot系统监控预警 26. 修复OoenSSH高危漏洞(岫源)" - echo "------------------------" - echo "31. 留言板 66. 一条龙系统调优" - echo "------------------------" - echo "99. 重启服务器" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - read -p "请输入你的快捷按键: " kuaijiejian - echo "alias $kuaijiejian='~/kejilion.sh'" >> ~/.bashrc - source ~/.bashrc - echo "快捷键已设置" - ;; - - 2) - clear - echo "设置你的登录密码" - passwd - ;; - 3) - root_use - add_sshpasswd - ;; - - 4) - root_use - VERSION=$(python3 -V 2>&1 | awk '{print $2}') - echo -e "当前python版本号: ${huang}$VERSION${bai}" - echo "------------" - echo "推荐版本: 3.12 3.11 3.10 3.9 3.8 2.7" - echo "查询更多版本: https://www.python.org/downloads/" - echo "------------" - read -p "输入你要安装的python版本号: " py_new_v - - if ! grep -q 'export PYENV_ROOT="\$HOME/.pyenv"' ~/.bashrc; then - if command -v yum &>/dev/null; then - yum update -y && yum install git -y - yum groupinstall "Development Tools" -y - yum install openssl-devel bzip2-devel libffi-devel ncurses-devel zlib-devel readline-devel sqlite-devel xz-devel findutils -y - - curl -O https://www.openssl.org/source/openssl-1.1.1u.tar.gz - tar -xzf openssl-1.1.1u.tar.gz - cd openssl-1.1.1u - ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib - make - make install - echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl-1.1.1u.conf - ldconfig -v - cd .. - - export LDFLAGS="-L/usr/local/openssl/lib" - export CPPFLAGS="-I/usr/local/openssl/include" - export PKG_CONFIG_PATH="/usr/local/openssl/lib/pkgconfig" - - elif command -v apt &>/dev/null; then - apt update -y && apt install git -y - apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev libgdbm-dev libnss3-dev libedit-dev -y - elif command -v apk &>/dev/null; then - apk update && apk add git - apk add --no-cache bash gcc musl-dev libffi-dev openssl-dev bzip2-dev zlib-dev readline-dev sqlite-dev libc6-compat linux-headers make xz-dev build-base ncurses-dev - else - echo "未知的包管理器!" - return 1 - fi - - curl https://pyenv.run | bash - cat << EOF >> ~/.bashrc - -export PYENV_ROOT="\$HOME/.pyenv" -if [[ -d "\$PYENV_ROOT/bin" ]]; then - export PATH="\$PYENV_ROOT/bin:\$PATH" -fi -eval "\$(pyenv init --path)" -eval "\$(pyenv init -)" -eval "\$(pyenv virtualenv-init -)" - -EOF - - fi - - sleep 1 - source ~/.bashrc - sleep 1 - pyenv install $py_new_v - pyenv global $py_new_v - - rm -rf /tmp/python-build.* - rm -rf $(pyenv root)/cache/* - - VERSION=$(python -V 2>&1 | awk '{print $2}') - echo -e "当前python版本号: ${huang}$VERSION${bai}" - - ;; - - 5) - root_use - iptables_open - remove iptables-persistent ufw firewalld iptables-services > /dev/null 2>&1 - echo "端口已全部开放" - - ;; - 6) - root_use - - # 去掉 #Port 的注释 - sed -i 's/#Port/Port/' /etc/ssh/sshd_config - - # 读取当前的 SSH 端口号 - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - # 打印当前的 SSH 端口号 - echo "当前的 SSH 端口号是: $current_port" - - echo "------------------------" - - # 提示用户输入新的 SSH 端口号 - read -p "请输入新的 SSH 端口号: " new_port - - new_ssh_port - - ;; - - - 7) - root_use - echo "当前DNS地址" - echo "------------------------" - cat /etc/resolv.conf - echo "------------------------" - echo "" - # 询问用户是否要优化DNS设置 - read -p "是否要设置DNS地址?(y/n): " choice - - if [ "$choice" == "y" ]; then - read -p "1. 国外DNS优化 2. 国内DNS优化 0. 退出 : " Limiting - - case "$Limiting" in - 1) - - dns1_ipv4="1.1.1.1" - dns2_ipv4="8.8.8.8" - dns1_ipv6="2606:4700:4700::1111" - dns2_ipv6="2001:4860:4860::8888" - set_dns - ;; - - 2) - dns1_ipv4="223.5.5.5" - dns2_ipv4="183.60.83.19" - dns1_ipv6="2400:3200::1" - dns2_ipv6="2400:da00::6666" - set_dns - ;; - 0) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - - else - echo "DNS设置未更改" - fi - - ;; - - 8) - - dd_xitong_1() { - echo -e "重装后初始用户名: ${huang}root${bai} 初始密码: ${huang}LeitboGi0ro${bai} 初始端口: ${huang}22${bai}" - echo -e "按任意键继续..." - read -n 1 -s -r -p "" - install wget - wget --no-check-certificate -qO InstallNET.sh 'https://raw.gitmirror.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh - } - - dd_xitong_2() { - echo -e "重装后初始用户名: ${huang}Administrator${bai} 初始密码: ${huang}Teddysun.com${bai} 初始端口: ${huang}3389${bai}" - echo -e "按任意键继续..." - read -n 1 -s -r -p "" - install wget - wget --no-check-certificate -qO InstallNET.sh 'https://raw.gitmirror.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh - } - - dd_xitong_3() { - echo -e "重装后初始用户名: ${huang}root${bai} 初始密码: ${huang}123@@@${bai} 初始端口: ${huang}22${bai}" - echo -e "按任意键继续..." - read -n 1 -s -r -p "" - curl -O https://raw.gitmirror.com/bin456789/reinstall/main/reinstall.sh - } - - dd_xitong_4() { - echo -e "重装后初始用户名: ${huang}Administrator${bai} 初始密码: ${huang}123@@@${bai} 初始端口: ${huang}3389${bai}" - echo -e "按任意键继续..." - read -n 1 -s -r -p "" - curl -O https://raw.gitmirror.com/bin456789/reinstall/main/reinstall.sh - } - - - - while true; do - root_use - echo "请备份数据,将为你重装系统,预计花费15分钟。" - echo -e "${hui}感谢MollyLau大佬和bin456789大佬的脚本支持!${bai} " - echo "------------------------" - echo "1. Debian 12" - echo "2. Debian 11" - echo "3. Debian 10" - echo "4. Debian 9" - echo "------------------------" - echo "11. Ubuntu 24.04" - echo "12. Ubuntu 22.04" - echo "13. Ubuntu 20.04" - echo "14. Ubuntu 18.04" - echo "------------------------" - echo "21. CentOS 9" - echo "22. CentOS 8" - echo "23. CentOS 7" - echo "------------------------" - echo "31. Alpine Linux" - echo "32. Rocky Linux" - echo "33. Alma Linux" - echo "34. Fedora Linux" - echo "------------------------" - echo "41. Windows 11" - echo "42. Windows 10" - echo "43. Windows 7" - echo "44. Windows Server 2022" - echo "45. Windows Server 2019" - echo "46. Windows Server 2016" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请选择要重装的系统: " sys_choice - - case "$sys_choice" in - 1) - dd_xitong_1 - bash InstallNET.sh -debian 12 - reboot - exit - ;; - - 2) - dd_xitong_1 - bash InstallNET.sh -debian 11 - reboot - exit - ;; - - 3) - dd_xitong_1 - bash InstallNET.sh -debian 10 - reboot - exit - ;; - 4) - dd_xitong_1 - bash InstallNET.sh -debian 9 - reboot - exit - ;; - - 11) - dd_xitong_1 - bash InstallNET.sh -ubuntu 24.04 - reboot - exit - ;; - 12) - dd_xitong_1 - bash InstallNET.sh -ubuntu 22.04 - reboot - exit - ;; - - 13) - dd_xitong_1 - bash InstallNET.sh -ubuntu 20.04 - reboot - exit - ;; - 14) - dd_xitong_1 - bash InstallNET.sh -ubuntu 18.04 - reboot - exit - ;; - - - 21) - dd_xitong_1 - bash InstallNET.sh -centos 9 - reboot - exit - ;; - - - 22) - dd_xitong_1 - bash InstallNET.sh -centos 8 - reboot - exit - ;; - - 23) - dd_xitong_1 - bash InstallNET.sh -centos 7 - reboot - exit - ;; - - 31) - dd_xitong_1 - bash InstallNET.sh -alpine - reboot - exit - ;; - - 32) - dd_xitong_1 - bash InstallNET.sh -rockylinux - reboot - exit - ;; - - 33) - dd_xitong_3 - bash reinstall.sh alma - reboot - exit - ;; - - 34) - dd_xitong_3 - bash reinstall.sh fedora - reboot - exit - ;; - - 41) - dd_xitong_2 - bash InstallNET.sh -windows 11 -lang "cn" - reboot - exit - ;; - - 42) - dd_xitong_2 - bash InstallNET.sh -windows 10 -lang "cn" - reboot - exit - ;; - - 43) - dd_xitong_4 - URL="https://massgrave.dev/windows_7_links" - web_content=$(wget -q -O - "$URL") - iso_link=$(echo "$web_content" | grep -oP '(?<=href=")[^"]*cn[^"]*windows_7[^"]*professional[^"]*x64[^"]*\.iso') - # bash reinstall.sh windows --image-name 'Windows 7 Professional' --lang zh-cn - # bash reinstall.sh windows --iso='$iso_link' --image-name='Windows 7 PROFESSIONAL' - bash reinstall.sh windows --iso="$iso_link" --image-name='Windows 7 PROFESSIONAL' - - reboot - exit - ;; - - 44) - dd_xitong_4 - URL="https://massgrave.dev/windows_server_links" - web_content=$(wget -q -O - "$URL") - iso_link=$(echo "$web_content" | grep -oP '(?<=href=")[^"]*cn[^"]*windows_server[^"]*2022[^"]*x64[^"]*\.iso') - bash reinstall.sh windows --iso="$iso_link" --image-name='Windows Server 2022 SERVERDATACENTER' - reboot - exit - ;; - - 45) - dd_xitong_2 - bash InstallNET.sh -windows 2019 -lang "cn" - reboot - exit - ;; - - 46) - dd_xitong_2 - bash InstallNET.sh -windows 2016 -lang "cn" - reboot - exit - ;; - - 0) - break - ;; - - *) - echo "无效的选择,请重新输入。" - break - ;; - esac - done - - ;; - 9) - root_use - - # 提示用户输入新用户名 - read -p "请输入新用户名: " new_username - - # 创建新用户并设置密码 - useradd -m -s /bin/bash "$new_username" - passwd "$new_username" - - # 赋予新用户sudo权限 - echo "$new_username ALL=(ALL:ALL) ALL" | sudo tee -a /etc/sudoers - - # 禁用ROOT用户登录 - passwd -l root - - echo "操作已完成。" - ;; - - - 10) - root_use - ipv6_disabled=$(sysctl -n net.ipv6.conf.all.disable_ipv6) - - echo "" - if [ "$ipv6_disabled" -eq 1 ]; then - echo "当前网络优先级设置: IPv4 优先" - else - echo "当前网络优先级设置: IPv6 优先" - fi - echo "------------------------" - - echo "" - echo "切换的网络优先级" - echo "------------------------" - echo "1. IPv4 优先 2. IPv6 优先" - echo "------------------------" - read -p "选择优先的网络: " choice - - case $choice in - 1) - sysctl -w net.ipv6.conf.all.disable_ipv6=1 > /dev/null 2>&1 - echo "已切换为 IPv4 优先" - ;; - 2) - sysctl -w net.ipv6.conf.all.disable_ipv6=0 > /dev/null 2>&1 - echo "已切换为 IPv6 优先" - ;; - *) - echo "无效的选择" - ;; - - esac - ;; - - 11) - clear - ss -tulnape - ;; - - 12) - - - root_use - # 获取当前交换空间信息 - swap_used=$(free -m | awk 'NR==3{print $3}') - swap_total=$(free -m | awk 'NR==3{print $2}') - - if [ "$swap_total" -eq 0 ]; then - swap_percentage=0 - else - swap_percentage=$((swap_used * 100 / swap_total)) - fi - - swap_info="${swap_used}MB/${swap_total}MB (${swap_percentage}%)" - - echo "当前虚拟内存: $swap_info" - - read -p "是否调整大小?(Y/N): " choice - - case "$choice" in - [Yy]) - # 输入新的虚拟内存大小 - read -p "请输入虚拟内存大小MB: " new_swap - add_swap - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - - 13) - while true; do - root_use - - # 显示所有用户、用户权限、用户组和是否在sudoers中 - echo "用户列表" - echo "----------------------------------------------------------------------------" - printf "%-24s %-34s %-20s %-10s\n" "用户名" "用户权限" "用户组" "sudo权限" - while IFS=: read -r username _ userid groupid _ _ homedir shell; do - groups=$(groups "$username" | cut -d : -f 2) - sudo_status=$(sudo -n -lU "$username" 2>/dev/null | grep -q '(ALL : ALL)' && echo "Yes" || echo "No") - printf "%-20s %-30s %-20s %-10s\n" "$username" "$homedir" "$groups" "$sudo_status" - done < /etc/passwd - - - echo "" - echo "账户操作" - echo "------------------------" - echo "1. 创建普通账户 2. 创建高级账户" - echo "------------------------" - echo "3. 赋予最高权限 4. 取消最高权限" - echo "------------------------" - echo "5. 删除账号" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - # 提示用户输入新用户名 - read -p "请输入新用户名: " new_username - - # 创建新用户并设置密码 - useradd -m -s /bin/bash "$new_username" - passwd "$new_username" - - echo "操作已完成。" - ;; - - 2) - # 提示用户输入新用户名 - read -p "请输入新用户名: " new_username - - # 创建新用户并设置密码 - useradd -m -s /bin/bash "$new_username" - passwd "$new_username" - - # 赋予新用户sudo权限 - echo "$new_username ALL=(ALL:ALL) ALL" | sudo tee -a /etc/sudoers - - echo "操作已完成。" - - ;; - 3) - read -p "请输入用户名: " username - # 赋予新用户sudo权限 - echo "$username ALL=(ALL:ALL) ALL" | sudo tee -a /etc/sudoers - ;; - 4) - read -p "请输入用户名: " username - # 从sudoers文件中移除用户的sudo权限 - sed -i "/^$username\sALL=(ALL:ALL)\sALL/d" /etc/sudoers - - ;; - 5) - read -p "请输入要删除的用户名: " username - # 删除用户及其主目录 - userdel -r "$username" - ;; - - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - - 14) - clear - - echo "随机用户名" - echo "------------------------" - for i in {1..5}; do - username="user$(< /dev/urandom tr -dc _a-z0-9 | head -c6)" - echo "随机用户名 $i: $username" - done - - echo "" - echo "随机姓名" - echo "------------------------" - first_names=("John" "Jane" "Michael" "Emily" "David" "Sophia" "William" "Olivia" "James" "Emma" "Ava" "Liam" "Mia" "Noah" "Isabella") - last_names=("Smith" "Johnson" "Brown" "Davis" "Wilson" "Miller" "Jones" "Garcia" "Martinez" "Williams" "Lee" "Gonzalez" "Rodriguez" "Hernandez") - - # 生成5个随机用户姓名 - for i in {1..5}; do - first_name_index=$((RANDOM % ${#first_names[@]})) - last_name_index=$((RANDOM % ${#last_names[@]})) - user_name="${first_names[$first_name_index]} ${last_names[$last_name_index]}" - echo "随机用户姓名 $i: $user_name" - done - - echo "" - echo "随机UUID" - echo "------------------------" - for i in {1..5}; do - uuid=$(cat /proc/sys/kernel/random/uuid) - echo "随机UUID $i: $uuid" - done - - echo "" - echo "16位随机密码" - echo "------------------------" - for i in {1..5}; do - password=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c16) - echo "随机密码 $i: $password" - done - - echo "" - echo "32位随机密码" - echo "------------------------" - for i in {1..5}; do - password=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c32) - echo "随机密码 $i: $password" - done - echo "" - - ;; - - 15) - root_use - while true; do - - echo "系统时间信息" - - # 获取当前系统时区 - timezone=$(current_timezone) - - # 获取当前系统时间 - current_time=$(date +"%Y-%m-%d %H:%M:%S") - - # 显示时区和时间 - echo "当前系统时区:$timezone" - echo "当前系统时间:$current_time" - - echo "" - echo "时区切换" - echo "亚洲------------------------" - echo "1. 中国上海时间 2. 中国香港时间" - echo "3. 日本东京时间 4. 韩国首尔时间" - echo "5. 新加坡时间 6. 印度加尔各答时间" - echo "7. 阿联酋迪拜时间 8. 澳大利亚悉尼时间" - echo "欧洲------------------------" - echo "11. 英国伦敦时间 12. 法国巴黎时间" - echo "13. 德国柏林时间 14. 俄罗斯莫斯科时间" - echo "15. 荷兰尤特赖赫特时间 16. 西班牙马德里时间" - echo "美洲------------------------" - echo "21. 美国西部时间 22. 美国东部时间" - echo "23. 加拿大时间 24. 墨西哥时间" - echo "25. 巴西时间 26. 阿根廷时间" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - - case $sub_choice in - 1) set_timedate Asia/Shanghai ;; - 2) set_timedate Asia/Hong_Kong ;; - 3) set_timedate Asia/Tokyo ;; - 4) set_timedate Asia/Seoul ;; - 5) set_timedate Asia/Singapore ;; - 6) set_timedate Asia/Kolkata ;; - 7) set_timedate Asia/Dubai ;; - 8) set_timedate Australia/Sydney ;; - 11) set_timedate Europe/London ;; - 12) set_timedate Europe/Paris ;; - 13) set_timedate Europe/Berlin ;; - 14) set_timedate Europe/Moscow ;; - 15) set_timedate Europe/Amsterdam ;; - 16) set_timedate Europe/Madrid ;; - 21) set_timedate America/Los_Angeles ;; - 22) set_timedate America/New_York ;; - 23) set_timedate America/Vancouver ;; - 24) set_timedate America/Mexico_City ;; - 25) set_timedate America/Sao_Paulo ;; - 26) set_timedate America/Argentina/Buenos_Aires ;; - 0) break ;; # 跳出循环,退出菜单 - *) break ;; # 跳出循环,退出菜单 - esac - done - ;; - - 16) - root_use - if dpkg -l | grep -q 'linux-xanmod'; then - while true; do - - kernel_version=$(uname -r) - echo "您已安装xanmod的BBRv3内核" - echo "当前内核版本: $kernel_version" - - echo "" - echo "内核管理" - echo "------------------------" - echo "1. 更新BBRv3内核 2. 卸载BBRv3内核" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - apt purge -y 'linux-*xanmod1*' - update-grub - - # wget -qO - https://dl.xanmod.org/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes - wget -qO - https://raw.gitmirror.com/kejilion/sh/main/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes - - # 步骤3:添加存储库 - echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | tee /etc/apt/sources.list.d/xanmod-release.list - - # version=$(wget -q https://dl.xanmod.org/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') - version=$(wget -q https://raw.gitmirror.com/kejilion/sh/main/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') - - apt update -y - apt install -y linux-xanmod-x64v$version - - echo "XanMod内核已更新。重启后生效" - rm -f /etc/apt/sources.list.d/xanmod-release.list - rm -f check_x86-64_psabi.sh* - - server_reboot - - ;; - 2) - apt purge -y 'linux-*xanmod1*' - update-grub - echo "XanMod内核已卸载。重启后生效" - server_reboot - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - - esac - done - else - - clear - echo "请备份数据,将为你升级Linux内核开启BBR3" - echo "官网介绍: https://xanmod.org/" - echo "------------------------------------------------" - echo "仅支持Debian/Ubuntu 仅支持x86_64架构" - echo "VPS是512M内存的,请提前添加1G虚拟内存,防止因内存不足失联!" - echo "------------------------------------------------" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - if [ -r /etc/os-release ]; then - . /etc/os-release - if [ "$ID" != "debian" ] && [ "$ID" != "ubuntu" ]; then - echo "当前环境不支持,仅支持Debian和Ubuntu系统" - break - fi - else - echo "无法确定操作系统类型" - break - fi - - # 检查系统架构 - arch=$(dpkg --print-architecture) - if [ "$arch" != "amd64" ]; then - echo "当前环境不支持,仅支持x86_64架构" - break - fi - - new_swap=1024 - add_swap - install wget gnupg - - # wget -qO - https://dl.xanmod.org/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes - wget -qO - https://raw.gitmirror.com/kejilion/sh/main/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes - - # 步骤3:添加存储库 - echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | tee /etc/apt/sources.list.d/xanmod-release.list - - # version=$(wget -q https://dl.xanmod.org/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') - version=$(wget -q https://raw.gitmirror.com/kejilion/sh/main/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') - - apt update -y - apt install -y linux-xanmod-x64v$version - - # 步骤5:启用BBR3 - cat > /etc/sysctl.conf << EOF -net.core.default_qdisc=fq_pie -net.ipv4.tcp_congestion_control=bbr -EOF - sysctl -p - echo "XanMod内核安装并BBR3启用成功。重启后生效" - rm -f /etc/apt/sources.list.d/xanmod-release.list - rm -f check_x86-64_psabi.sh* - server_reboot - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - fi - ;; - - 17) - root_use - if dpkg -l | grep -q iptables-persistent; then - while true; do - echo "防火墙已安装" - echo "------------------------" - iptables -L INPUT - - echo "" - echo "防火墙管理" - echo "------------------------" - echo "1. 开放指定端口 2. 关闭指定端口" - echo "3. 开放所有端口 4. 关闭所有端口" - echo "------------------------" - echo "5. IP白名单 6. IP黑名单" - echo "7. 清除指定IP" - echo "------------------------" - echo "9. 卸载防火墙" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入开放的端口号: " o_port - sed -i "/COMMIT/i -A INPUT -p tcp --dport $o_port -j ACCEPT" /etc/iptables/rules.v4 - sed -i "/COMMIT/i -A INPUT -p udp --dport $o_port -j ACCEPT" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - - ;; - 2) - read -p "请输入关闭的端口号: " c_port - sed -i "/--dport $c_port/d" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - ;; - - 3) - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - cat > /etc/iptables/rules.v4 << EOF -*filter -:INPUT ACCEPT [0:0] -:FORWARD ACCEPT [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -i lo -j ACCEPT --A FORWARD -i lo -j ACCEPT --A INPUT -p tcp --dport $current_port -j ACCEPT -COMMIT -EOF - iptables-restore < /etc/iptables/rules.v4 - - ;; - 4) - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - cat > /etc/iptables/rules.v4 << EOF -*filter -:INPUT DROP [0:0] -:FORWARD DROP [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -i lo -j ACCEPT --A FORWARD -i lo -j ACCEPT --A INPUT -p tcp --dport $current_port -j ACCEPT -COMMIT -EOF - iptables-restore < /etc/iptables/rules.v4 - - ;; - - 5) - read -p "请输入放行的IP: " o_ip - sed -i "/COMMIT/i -A INPUT -s $o_ip -j ACCEPT" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - - ;; - - 6) - read -p "请输入封锁的IP: " c_ip - sed -i "/COMMIT/i -A INPUT -s $c_ip -j DROP" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - ;; - - 7) - read -p "请输入清除的IP: " d_ip - sed -i "/-A INPUT -s $d_ip/d" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - ;; - - 9) - remove iptables-persistent - rm /etc/iptables/rules.v4 - break - ;; - - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - - esac - done - else - - clear - echo "将为你安装防火墙,该防火墙仅支持Debian/Ubuntu" - echo "------------------------------------------------" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - if [ -r /etc/os-release ]; then - . /etc/os-release - if [ "$ID" != "debian" ] && [ "$ID" != "ubuntu" ]; then - echo "当前环境不支持,仅支持Debian和Ubuntu系统" - break - fi - else - echo "无法确定操作系统类型" - break - fi - - clear - iptables_open - remove iptables-persistent ufw - rm /etc/iptables/rules.v4 - - apt update -y && apt install -y iptables-persistent - - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - cat > /etc/iptables/rules.v4 << EOF -*filter -:INPUT DROP [0:0] -:FORWARD DROP [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -i lo -j ACCEPT --A FORWARD -i lo -j ACCEPT --A INPUT -p tcp --dport $current_port -j ACCEPT -COMMIT -EOF - - iptables-restore < /etc/iptables/rules.v4 - systemctl enable netfilter-persistent - echo "防火墙安装完成" - - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - fi - ;; - - 18) - root_use - current_hostname=$(hostname) - echo "当前主机名: $current_hostname" - read -p "是否要更改主机名?(y/n): " answer - if [[ "${answer,,}" == "y" ]]; then - # 获取新的主机名 - read -p "请输入新的主机名: " new_hostname - if [ -n "$new_hostname" ]; then - if [ -f /etc/alpine-release ]; then - # Alpine - echo "$new_hostname" > /etc/hostname - hostname "$new_hostname" - else - # 其他系统,如 Debian, Ubuntu, CentOS 等 - hostnamectl set-hostname "$new_hostname" - sed -i "s/$current_hostname/$new_hostname/g" /etc/hostname - systemctl restart systemd-hostnamed - fi - echo "主机名已更改为: $new_hostname" - else - echo "无效的主机名。未更改主机名。" - exit 1 - fi - else - echo "未更改主机名。" - fi - ;; - - 19) - root_use - # 获取系统信息 - source /etc/os-release - - # 定义 Ubuntu 更新源 - aliyun_ubuntu_source="http://mirrors.aliyun.com/ubuntu/" - official_ubuntu_source="http://archive.ubuntu.com/ubuntu/" - initial_ubuntu_source="" - - # 定义 Debian 更新源 - aliyun_debian_source="http://mirrors.aliyun.com/debian/" - official_debian_source="http://deb.debian.org/debian/" - initial_debian_source="" - - # 定义 CentOS 更新源 - aliyun_centos_source="http://mirrors.aliyun.com/centos/" - official_centos_source="http://mirror.centos.org/centos/" - initial_centos_source="" - - # 获取当前更新源并设置初始源 - case "$ID" in - ubuntu) - initial_ubuntu_source=$(grep -E '^deb ' /etc/apt/sources.list | head -n 1 | awk '{print $2}') - ;; - debian) - initial_debian_source=$(grep -E '^deb ' /etc/apt/sources.list | head -n 1 | awk '{print $2}') - ;; - centos) - initial_centos_source=$(awk -F= '/^baseurl=/ {print $2}' /etc/yum.repos.d/CentOS-Base.repo | head -n 1 | tr -d ' ') - ;; - *) - echo "未知系统,无法执行切换源脚本" - exit 1 - ;; - esac - - # 备份当前源 - backup_sources() { - case "$ID" in - ubuntu) - cp /etc/apt/sources.list /etc/apt/sources.list.bak - ;; - debian) - cp /etc/apt/sources.list /etc/apt/sources.list.bak - ;; - centos) - if [ ! -f /etc/yum.repos.d/CentOS-Base.repo.bak ]; then - cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak - else - echo "备份已存在,无需重复备份" - fi - ;; - *) - echo "未知系统,无法执行备份操作" - exit 1 - ;; - esac - echo "已备份当前更新源为 /etc/apt/sources.list.bak 或 /etc/yum.repos.d/CentOS-Base.repo.bak" - } - - # 还原初始更新源 - restore_initial_source() { - case "$ID" in - ubuntu) - cp /etc/apt/sources.list.bak /etc/apt/sources.list - ;; - debian) - cp /etc/apt/sources.list.bak /etc/apt/sources.list - ;; - centos) - cp /etc/yum.repos.d/CentOS-Base.repo.bak /etc/yum.repos.d/CentOS-Base.repo - ;; - *) - echo "未知系统,无法执行还原操作" - exit 1 - ;; - esac - echo "已还原初始更新源" - } - - # 函数:切换更新源 - switch_source() { - case "$ID" in - ubuntu) - sed -i 's|'"$initial_ubuntu_source"'|'"$1"'|g' /etc/apt/sources.list - ;; - debian) - sed -i 's|'"$initial_debian_source"'|'"$1"'|g' /etc/apt/sources.list - ;; - centos) - sed -i "s|^baseurl=.*$|baseurl=$1|g" /etc/yum.repos.d/CentOS-Base.repo - ;; - *) - echo "未知系统,无法执行切换操作" - exit 1 - ;; - esac - } - - # 主菜单 - while true; do - case "$ID" in - ubuntu) - echo "Ubuntu 更新源切换脚本" - echo "------------------------" - ;; - debian) - echo "Debian 更新源切换脚本" - echo "------------------------" - ;; - centos) - echo "CentOS 更新源切换脚本" - echo "------------------------" - ;; - *) - echo "未知系统,无法执行脚本" - exit 1 - ;; - esac - - echo "1. 切换到阿里云源" - echo "2. 切换到官方源" - echo "------------------------" - echo "3. 备份当前更新源" - echo "4. 还原初始更新源" - echo "------------------------" - echo "0. 返回上一级" - echo "------------------------" - read -p "请选择操作: " choice - - case $choice in - 1) - backup_sources - case "$ID" in - ubuntu) - switch_source $aliyun_ubuntu_source - ;; - debian) - switch_source $aliyun_debian_source - ;; - centos) - switch_source $aliyun_centos_source - ;; - *) - echo "未知系统,无法执行切换操作" - exit 1 - ;; - esac - echo "已切换到阿里云源" - ;; - 2) - backup_sources - case "$ID" in - ubuntu) - switch_source $official_ubuntu_source - ;; - debian) - switch_source $official_debian_source - ;; - centos) - switch_source $official_centos_source - ;; - *) - echo "未知系统,无法执行切换操作" - exit 1 - ;; - esac - echo "已切换到官方源" - ;; - 3) - backup_sources - case "$ID" in - ubuntu) - switch_source $initial_ubuntu_source - ;; - debian) - switch_source $initial_debian_source - ;; - centos) - switch_source $initial_centos_source - ;; - *) - echo "未知系统,无法执行切换操作" - exit 1 - ;; - esac - echo "已切换到初始更新源" - ;; - 4) - restore_initial_source - ;; - 0) - break - ;; - *) - echo "无效的选择,请重新输入" - ;; - esac - break_end - - done - - ;; - - 20) - - while true; do - clear - echo "定时任务列表" - crontab -l - echo "" - echo "操作" - echo "------------------------" - echo "1. 添加定时任务 2. 删除定时任务 3. 编辑定时任务" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入新任务的执行命令: " newquest - echo "------------------------" - echo "1. 每月任务 2. 每周任务" - echo "3. 每天任务 4. 每小时任务" - echo "------------------------" - read -p "请输入你的选择: " dingshi - - case $dingshi in - 1) - read -p "选择每月的几号执行任务? (1-30): " day - (crontab -l ; echo "0 0 $day * * $newquest") | crontab - > /dev/null 2>&1 - ;; - 2) - read -p "选择周几执行任务? (0-6,0代表星期日): " weekday - (crontab -l ; echo "0 0 * * $weekday $newquest") | crontab - > /dev/null 2>&1 - ;; - 3) - read -p "选择每天几点执行任务?(小时,0-23): " hour - (crontab -l ; echo "0 $hour * * * $newquest") | crontab - > /dev/null 2>&1 - ;; - 4) - read -p "输入每小时的第几分钟执行任务?(分钟,0-60): " minute - (crontab -l ; echo "$minute * * * * $newquest") | crontab - > /dev/null 2>&1 - ;; - *) - break # 跳出 - ;; - esac - ;; - 2) - read -p "请输入需要删除任务的关键字: " kquest - crontab -l | grep -v "$kquest" | crontab - - ;; - 3) - crontab -e - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - - ;; - - 21) - root_use - while true; do - echo "本机host解析列表" - echo "如果你在这里添加解析匹配,将不再使用动态解析了" - cat /etc/hosts - echo "" - echo "操作" - echo "------------------------" - echo "1. 添加新的解析 2. 删除解析地址" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " host_dns - - case $host_dns in - 1) - read -p "请输入新的解析记录 格式: 110.25.5.33 kejilion.pro : " addhost - echo "$addhost" >> /etc/hosts - - ;; - 2) - read -p "请输入需要删除的解析内容关键字: " delhost - sed -i "/$delhost/d" /etc/hosts - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - - 22) - root_use - if docker inspect fail2ban &>/dev/null ; then - while true; do - clear - echo "SSH防御程序已启动" - echo "------------------------" - echo "1. 查看SSH拦截记录" - echo "2. 日志实时监控" - echo "------------------------" - echo "9. 卸载防御程序" - echo "------------------------" - echo "0. 退出" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - case $sub_choice in - - 1) - echo "------------------------" - f2b_sshd - echo "------------------------" - ;; - 2) - tail -f /path/to/fail2ban/config/log/fail2ban/fail2ban.log - break - ;; - 9) - docker rm -f fail2ban - rm -rf /path/to/fail2ban - echo "Fail2Ban防御程序已卸载" - - break - ;; - 0) - break - ;; - *) - echo "无效的选择,请重新输入。" - ;; - esac - break_end - - done - - elif [ -x "$(command -v fail2ban-client)" ] ; then - clear - echo "卸载旧版fail2ban" - read -p "确定继续吗?(Y/N): " choice - case "$choice" in - [Yy]) - remove fail2ban - rm -rf /etc/fail2ban - echo "Fail2Ban防御程序已卸载" - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - else - - clear - echo "fail2ban是一个SSH防止暴力破解工具" - echo "官网介绍: https://hub.gitmirror.com/https://github.com/fail2ban/fail2ban" - echo "------------------------------------------------" - echo "工作原理:研判非法IP恶意高频访问SSH端口,自动进行IP封锁" - echo "------------------------------------------------" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - clear - install_docker - f2b_install_sshd - - cd ~ - f2b_status - echo "Fail2Ban防御程序已开启" - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - fi - ;; - - - 23) - root_use - echo "当前流量使用情况,重启服务器流量计算会清零!" - output_status - echo "$output" - - # 检查是否存在 Limiting_Shut_down.sh 文件 - if [ -f ~/Limiting_Shut_down.sh ]; then - # 获取 threshold_gb 的值 - threshold_gb=$(grep -oP 'threshold_gb=\K\d+' ~/Limiting_Shut_down.sh) - echo -e "当前设置的限流阈值为 ${hang}${threshold_gb}${bai}GB" - else - echo -e "${hui}前未启用限流关机功能${bai}" - fi - - echo - echo "------------------------------------------------" - echo "系统每分钟会检测实际流量是否到达阈值,到达后会自动关闭服务器!每月1日重置流量重启服务器。" - read -p "1. 开启限流关机功能 2. 停用限流关机功能 0. 退出 : " Limiting - - case "$Limiting" in - 1) - # 输入新的虚拟内存大小 - echo "如果实际服务器就100G流量,可设置阈值为95G,提前关机,以免出现流量误差或溢出." - read -p "请输入流量阈值(单位为GB): " threshold_gb - cd ~ - curl -Ss -O https://raw.gitmirror.com/kejilion/sh/main/Limiting_Shut_down.sh - chmod +x ~/Limiting_Shut_down.sh - sed -i "s/110/$threshold_gb/g" ~/Limiting_Shut_down.sh - crontab -l | grep -v '~/Limiting_Shut_down.sh' | crontab - - (crontab -l ; echo "* * * * * ~/Limiting_Shut_down.sh") | crontab - > /dev/null 2>&1 - crontab -l | grep -v 'reboot' | crontab - - (crontab -l ; echo "0 1 1 * * reboot") | crontab - > /dev/null 2>&1 - echo "限流关机已设置" - - ;; - 0) - echo "已取消" - ;; - 2) - crontab -l | grep -v '~/Limiting_Shut_down.sh' | crontab - - crontab -l | grep -v 'reboot' | crontab - - rm ~/Limiting_Shut_down.sh - echo "已关闭限流关机功能" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - - 24) - root_use - echo "ROOT私钥登录模式" - echo "------------------------------------------------" - echo "将会生成密钥对,更安全的方式SSH登录" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - clear - add_sshkey - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - 25) - root_use - echo "TG-bot监控预警功能" - echo "------------------------------------------------" - echo "您需要配置tg机器人API和接收预警的用户ID,即可实现本机CPU,内存,硬盘,流量,SSH登录的实时监控预警" - echo "到达阈值后会向用户发预警消息" - echo -e "${hui}-关于流量,重启服务器将重新计算-${bai}" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - cd ~ - install nano tmux bc jq - if [ -f ~/TG-check-notify.sh ]; then - chmod +x ~/TG-check-notify.sh - nano ~/TG-check-notify.sh - else - curl -sS -O https://raw.gitmirror.com/kejilion/sh/main/TG-check-notify.sh - chmod +x ~/TG-check-notify.sh - nano ~/TG-check-notify.sh - fi - tmux kill-session -t TG-check-notify > /dev/null 2>&1 - tmux new -d -s TG-check-notify "~/TG-check-notify.sh" - crontab -l | grep -v '~/TG-check-notify.sh' | crontab - > /dev/null 2>&1 - (crontab -l ; echo "@reboot tmux new -d -s TG-check-notify '~/TG-check-notify.sh'") | crontab - > /dev/null 2>&1 - - curl -sS -O https://raw.gitmirror.com/kejilion/sh/main/TG-SSH-check-notify.sh > /dev/null 2>&1 - sed -i "3i$(grep '^TELEGRAM_BOT_TOKEN=' ~/TG-check-notify.sh)" TG-SSH-check-notify.sh > /dev/null 2>&1 - sed -i "4i$(grep '^CHAT_ID=' ~/TG-check-notify.sh)" TG-SSH-check-notify.sh - chmod +x ~/TG-SSH-check-notify.sh - - # 添加到 ~/.profile 文件中 - if ! grep -q 'bash ~/TG-SSH-check-notify.sh' ~/.profile; then - echo 'bash ~/TG-SSH-check-notify.sh' >> ~/.profile - fi - - source ~/.profile - - clear - echo "TG-bot预警系统已启动" - echo -e "${hui}你还可以将root目录中的TG-check-notify.sh预警文件放到其他机器上直接使用!${bai}" - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - 26) - root_use - cd ~ - curl -sS -O https://raw.gitmirror.com/kejilion/sh/main/upgrade_openssh9.8p1.sh - chmod +x ~/upgrade_openssh9.8p1.sh - ~/upgrade_openssh9.8p1.sh - rm -f ~/upgrade_openssh9.8p1.sh - ;; - - 31) - clear - install sshpass - - remote_ip="66.42.61.110" - remote_user="liaotian123" - remote_file="/home/liaotian123/liaotian.txt" - password="kejilionYYDS" # 替换为您的密码 - - clear - echo "科技lion留言板" - echo "------------------------" - # 显示已有的留言内容 - sshpass -p "${password}" ssh -o StrictHostKeyChecking=no "${remote_user}@${remote_ip}" "cat '${remote_file}'" - echo "" - echo "------------------------" - - # 判断是否要留言 - read -p "是否要留言?(y/n): " leave_message - - if [ "$leave_message" == "y" ] || [ "$leave_message" == "Y" ]; then - # 输入新的留言内容 - read -p "输入你的昵称: " nicheng - read -p "输入你的聊天内容: " neirong - - # 添加新留言到远程文件 - sshpass -p "${password}" ssh -o StrictHostKeyChecking=no "${remote_user}@${remote_ip}" "echo -e '${nicheng}: ${neirong}' >> '${remote_file}'" - echo "已添加留言: " - echo "${nicheng}: ${neirong}" - echo "" - else - echo "您选择了不留言。" - fi - - echo "留言板操作完成。" - - ;; - - 66) - - root_use - echo "一条龙系统调优" - echo "------------------------------------------------" - echo "将对以下内容进行操作与优化" - echo "1. 更新系统到最新" - echo "2. 清理系统垃圾文件" - echo -e "3. 设置虚拟内存${huang}1G${bai}" - echo -e "4. 设置SSH端口号为${huang}5522${bai}" - echo -e "5. 开放所有端口" - echo -e "6. 开启${huang}BBR${bai}加速" - echo -e "7. 设置时区到${huang}上海${bai}" - echo -e "8. 优化DNS地址到${huang}1111 8888${bai}" - echo -e "9. 安装常用工具${huang}docker wget sudo tar unzip socat btop${bai}" - echo "------------------------------------------------" - read -p "确定一键保养吗?(Y/N): " choice - - case "$choice" in - [Yy]) - clear - - echo "------------------------------------------------" - linux_update - echo -e "[${lv}OK${bai}] 1/9. 更新系统到最新" - - echo "------------------------------------------------" - linux_clean - echo -e "[${lv}OK${bai}] 2/9. 清理系统垃圾文件" - - echo "------------------------------------------------" - new_swap=1024 - add_swap - echo -e "[${lv}OK${bai}] 3/9. 设置虚拟内存${huang}1G${bai}" - - echo "------------------------------------------------" - new_port=5522 - new_ssh_port - echo -e "[${lv}OK${bai}] 4/9. 设置SSH端口号为${huang}5522${bai}" - echo "------------------------------------------------" - echo -e "[${lv}OK${bai}] 5/9. 开放所有端口" - - echo "------------------------------------------------" - bbr_on - echo -e "[${lv}OK${bai}] 6/9. 开启${huang}BBR${bai}加速" - - echo "------------------------------------------------" - set_timedate Asia/Shanghai - echo -e "[${lv}OK${bai}] 7/9. 设置时区到${huang}上海${bai}" - - echo "------------------------------------------------" - dns1_ipv4="1.1.1.1" - dns2_ipv4="8.8.8.8" - dns1_ipv6="2606:4700:4700::1111" - dns2_ipv6="2001:4860:4860::8888" - set_dns - echo -e "[${lv}OK${bai}] 8/9. 优化DNS地址到${huang}1111 8888${bai}" - - echo "------------------------------------------------" - install_add_docker - install wget sudo tar unzip socat btop - echo -e "[${lv}OK${bai}] 9/9. 安装常用工具${huang}docker wget sudo tar unzip socat btop${bai}" - echo "------------------------------------------------" - echo -e "${lv}一条龙系统调优已完成${bai}" - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - 99) - clear - server_reboot - ;; - 0) - kejilion - - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - done - ;; - - 14) - clear - while true; do - clear - echo "▶ VPS集群控制" - echo "你可以远程操控多台VPS一起执行任务(仅支持Ubuntu/Debian)" - echo "------------------------" - echo "1. 安装集群环境" - echo "------------------------" - echo "2. 集群控制中心" - echo "------------------------" - echo "7. 备份集群环境" - echo "8. 还原集群环境" - echo "9. 卸载集群环境" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - install python3 python3-paramiko speedtest-cli lrzsz - mkdir cluster && cd cluster - touch servers.py - - cat > ./servers.py << EOF -servers = [ - -] -EOF - - ;; - 2) - - while true; do - clear - echo "集群服务器列表" - cat ~/cluster/servers.py - - echo "" - echo "操作" - echo "------------------------" - echo "1. 添加服务器 2. 删除服务器 3. 编辑服务器" - echo "------------------------" - echo "11. 安装科技lion脚本 12. 更新系统 13. 清理系统" - echo "14. 安装docker 15. 安装BBR3 16. 设置1G虚拟内存" - echo "17. 设置时区到上海 18. 开放所有端口" - echo "------------------------" - echo "51. 自定义指令" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "服务器名称: " server_name - read -p "服务器IP: " server_ip - read -p "服务器端口(22): " server_port - server_port=${server_port:-22} - read -p "服务器用户名(root): " server_username - server_username=${server_username:-root} - read -p "服务器用户密码: " server_password - - sed -i "/servers = \[/a\ {\"name\": \"$server_name\", \"hostname\": \"$server_ip\", \"port\": $server_port, \"username\": \"$server_username\", \"password\": \"$server_password\", \"remote_path\": \"/home/\"}," ~/cluster/servers.py - - ;; - 2) - read -p "请输入需要删除的关键字: " rmserver - sed -i "/$rmserver/d" ~/cluster/servers.py - ;; - 3) - install nano - nano ~/cluster/servers.py - ;; - 11) - py_task=install_kejilion.py - cluster_python3 - ;; - 12) - py_task=update.py - cluster_python3 - ;; - 13) - py_task=clean.py - cluster_python3 - ;; - 14) - py_task=install_docker.py - cluster_python3 - ;; - 15) - py_task=install_bbr3.py - cluster_python3 - ;; - 16) - py_task=swap1024.py - cluster_python3 - ;; - 17) - py_task=time_shanghai.py - cluster_python3 - ;; - 18) - py_task=firewall_close.py - cluster_python3 - ;; - 51) - - read -p "请输入批量执行的命令: " mingling - py_task=custom_tasks.py - cd ~/cluster/ - curl -sS -O https://raw.gitmirror.com/kejilion/python-for-vps/main/cluster/$py_task - sed -i "s#Customtasks#$mingling#g" ~/cluster/$py_task - python3 ~/cluster/$py_task - ;; - 0) - break # 跳出循环,退出菜单 - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - - ;; - 7) - clear - echo "将下载服务器列表数据,按任意键下载!" - read -n 1 -s -r -p "" - sz -y ~/cluster/servers.py - - ;; - - 8) - clear - echo "请上传您的servers.py,按任意键开始上传!" - read -n 1 -s -r -p "" - cd ~/cluster/ - rz -y - ;; - - 9) - - clear - read -p "请先备份环境,确定要卸载集群控制环境吗?(Y/N): " choice - case "$choice" in - [Yy]) - remove python3-paramiko speedtest-cli lrzsz - rm -rf ~/cluster/ - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - 0) - kejilion - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - done - - ;; - - 00) - cd ~ - clear - echo "更新日志" - echo "------------------------" - echo "全部日志: https://raw.gitmirror.com/kejilion/sh/main/kejilion_sh_log.txt" - echo "------------------------" - curl -s https://raw.gitmirror.com/kejilion/sh/main/kejilion_sh_log.txt | tail -n 35 - - sh_v_new=$(curl -s https://raw.gitmirror.com/kejilion/sh/main/kejilion.sh | grep -o 'sh_v="[0-9.]*"' | cut -d '"' -f 2) - - if [ "$sh_v" = "$sh_v_new" ]; then - echo -e "${lv}你已经是最新版本!${huang}v$sh_v${bai}" - else - echo "发现新版本!" - echo -e "当前版本 v$sh_v 最新版本 ${huang}v$sh_v_new${bai}" - echo "------------------------" - read -p "确定更新脚本吗?(Y/N): " choice - case "$choice" in - [Yy]) - clear - curl -sS -O https://raw.gitmirror.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh - cp ./kejilion.sh /usr/local/bin/k > /dev/null 2>&1 - echo -e "${lv}脚本已更新到最新版本!${huang}v$sh_v_new${bai}" - break_end - kejilion - ;; - [Nn]) - echo "已取消" - ;; - *) - ;; - esac - fi - - ;; - - 0) - clear - exit - ;; - - *) - echo "无效的输入!" - ;; -esac - break_end -done diff --git a/custom_mysql_config-1.cnf b/custom_mysql_config-1.cnf deleted file mode 100644 index e69de29..0000000 diff --git a/kejilion.sh b/kejilion.sh index 485a9f7..21eed2e 100644 --- a/kejilion.sh +++ b/kejilion.sh @@ -10,6 +10,23 @@ hong='\033[31m' kjlan='\033[96m' hui='\e[37m' +if [ -z "${GITHUB_RAW_URL:-}" ]; then + country=$(curl -fsS --max-time 3 https://ipinfo.io/country 2>/dev/null) + case "$country" in + CN) + GITHUB_RAW_URL="https://raw.gitmirror.com" + ;; + "") + GITHUB_RAW_URL="https://raw.githubusercontent.com" + echo "无法检测服务器地区,使用默认 GitHub Raw 地址。" >&2 + ;; + *) + GITHUB_RAW_URL="https://raw.githubusercontent.com" + ;; + esac +fi +GITHUB_RAW_URL="${GITHUB_RAW_URL%/}" + cp ./kejilion.sh /usr/local/bin/k > /dev/null 2>&1 @@ -107,7 +124,7 @@ install_add_docker() { country=$(curl -s ipinfo.io/country) if [ "$country" = "CN" ]; then cd ~ - curl -sS -O https://raw.gitmirror.com/kejilion/docker/main/install && chmod +x install + curl -sS -O "${GITHUB_RAW_URL}/kejilion/docker/main/install" && chmod +x install sh install --mirror Aliyun rm -f install cat > /etc/docker/daemon.json << EOF @@ -134,62 +151,6 @@ install_docker() { fi } -docker_restart() { -if [ -f "/etc/alpine-release" ]; then - service docker restart -else - systemctl restart docker -fi - -} - -docker_ipv6_on() { -mkdir -p /etc/docker &>/dev/null - -cat > /etc/docker/daemon.json << EOF - -{ - "ipv6": true, - "fixed-cidr-v6": "2001:db8:1::/64" -} - -EOF - -docker_restart - -echo "Docker已开启v6访问" - -} - - -docker_ipv6_off() { - -rm -rf etc/docker/daemon.json &>/dev/null - -docker_restart - -echo "Docker已关闭v6访问" - -} - - - - - -iptables_open() { - iptables -P INPUT ACCEPT - iptables -P FORWARD ACCEPT - iptables -P OUTPUT ACCEPT - iptables -F - - ip6tables -P INPUT ACCEPT - ip6tables -P FORWARD ACCEPT - ip6tables -P OUTPUT ACCEPT - ip6tables -F - -} - - add_swap() { # 获取当前系统中所有的 swap 分区 @@ -228,22 +189,10 @@ add_swap() { cluster_python3() { cd ~/cluster/ - curl -sS -O https://raw.githubusercontent.com/kejilion/python-for-vps/main/cluster/$py_task + curl -sS -O "${GITHUB_RAW_URL}/kejilion/python-for-vps/main/cluster/${py_task}" python3 ~/cluster/$py_task } -tmux_run() { - # Check if the session already exists - tmux has-session -t $SESSION_NAME 2>/dev/null - # $? is a special variable that holds the exit status of the last executed command - if [ $? != 0 ]; then - # Session doesn't exist, create a new one - tmux new -s $SESSION_NAME - else - # Session exists, attach to it - tmux attach-session -t $SESSION_NAME - fi -} f2b_status() { @@ -275,19 +224,19 @@ f2b_install_sshd() { sleep 3 if grep -q 'Alpine' /etc/issue; then cd /path/to/fail2ban/config/fail2ban/filter.d - curl -sS -O https://raw.githubusercontent.com/kejilion/config/main/fail2ban/alpine-sshd.conf - curl -sS -O https://raw.githubusercontent.com/kejilion/config/main/fail2ban/alpine-sshd-ddos.conf + curl -sS -O "${GITHUB_RAW_URL}/kejilion/config/main/fail2ban/alpine-sshd.conf" + curl -sS -O "${GITHUB_RAW_URL}/kejilion/config/main/fail2ban/alpine-sshd-ddos.conf" cd /path/to/fail2ban/config/fail2ban/jail.d/ - curl -sS -O https://raw.githubusercontent.com/kejilion/config/main/fail2ban/alpine-ssh.conf + curl -sS -O "${GITHUB_RAW_URL}/kejilion/config/main/fail2ban/alpine-ssh.conf" elif grep -qi 'CentOS' /etc/redhat-release; then cd /path/to/fail2ban/config/fail2ban/jail.d/ - curl -sS -O https://raw.githubusercontent.com/kejilion/config/main/fail2ban/centos-ssh.conf + curl -sS -O "${GITHUB_RAW_URL}/kejilion/config/main/fail2ban/centos-ssh.conf" else install rsyslog systemctl start rsyslog systemctl enable rsyslog cd /path/to/fail2ban/config/fail2ban/jail.d/ - curl -sS -O https://raw.githubusercontent.com/kejilion/config/main/fail2ban/linux-ssh.conf + curl -sS -O "${GITHUB_RAW_URL}/kejilion/config/main/fail2ban/linux-ssh.conf" fi } @@ -466,85 +415,13 @@ echo "------------------------" } -restart_ssh() { - -if command -v dnf &>/dev/null; then - systemctl restart sshd -elif command -v yum &>/dev/null; then - systemctl restart sshd -elif command -v apt &>/dev/null; then - service ssh restart -elif command -v apk &>/dev/null; then - service sshd restart -else - echo "未知的包管理器!" - return 1 -fi - -} - - -new_ssh_port() { - - - # 备份 SSH 配置文件 - cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak - - sed -i 's/^\s*#\?\s*Port/Port/' /etc/ssh/sshd_config - - # 替换 SSH 配置文件中的端口号 - sed -i "s/Port [0-9]\+/Port $new_port/g" /etc/ssh/sshd_config - - rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/* - - # 重启 SSH 服务 - restart_ssh - echo "SSH 端口已修改为: $new_port" - - iptables_open - remove iptables-persistent ufw firewalld iptables-services > /dev/null 2>&1 - -} -add_sshkey() { - -# ssh-keygen -t rsa -b 4096 -C "xxxx@gmail.com" -f /root/.ssh/sshkey -N "" -ssh-keygen -t ed25519 -C "xxxx@gmail.com" -f /root/.ssh/sshkey -N "" - -cat ~/.ssh/sshkey.pub >> ~/.ssh/authorized_keys -chmod 600 ~/.ssh/authorized_keys -ip_address -echo -e "私钥信息已生成,务必复制保存,可保存成 ${huang}${ipv4_address}_ssh.key${bai} 文件,用于以后的SSH登录" - -echo "--------------------------------" -cat ~/.ssh/sshkey -echo "--------------------------------" - -sed -i -e 's/^\s*#\?\s*PermitRootLogin .*/PermitRootLogin prohibit-password/' \ - -e 's/^\s*#\?\s*PasswordAuthentication .*/PasswordAuthentication no/' \ - -e 's/^\s*#\?\s*PubkeyAuthentication .*/PubkeyAuthentication yes/' \ - -e 's/^\s*#\?\s*ChallengeResponseAuthentication .*/ChallengeResponseAuthentication no/' /etc/ssh/sshd_config -rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/* -echo -e "${lv}ROOT私钥登录已开启,已关闭ROOT密码登录,重连将会生效${bai}" - -} -add_sshpasswd() { - -echo "设置你的ROOT密码" -passwd -sed -i 's/^\s*#\?\s*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config; -sed -i 's/^\s*#\?\s*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config; -rm -rf /etc/ssh/sshd_config.d/* /etc/ssh/ssh_config.d/* -restart_ssh -echo -e "${lv}ROOT登录设置完毕!${bai}" - -} root_use() { @@ -560,7 +437,7 @@ dd_xitong() { echo -e "按任意键继续..." read -n 1 -s -r -p "" install wget - wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh + wget --no-check-certificate -qO InstallNET.sh "${GITHUB_RAW_URL}/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh" && chmod a+x InstallNET.sh } dd_xitong_2() { @@ -568,21 +445,21 @@ dd_xitong() { echo -e "按任意键继续..." read -n 1 -s -r -p "" install wget - wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh + wget --no-check-certificate -qO InstallNET.sh "${GITHUB_RAW_URL}/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh" && chmod a+x InstallNET.sh } dd_xitong_3() { echo -e "重装后初始用户名: ${huang}root${bai} 初始密码: ${huang}123@@@${bai} 初始端口: ${huang}22${bai}" echo -e "按任意键继续..." read -n 1 -s -r -p "" - curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh + curl -O "${GITHUB_RAW_URL}/bin456789/reinstall/main/reinstall.sh" } dd_xitong_4() { echo -e "重装后初始用户名: ${huang}Administrator${bai} 初始密码: ${huang}123@@@${bai} 初始端口: ${huang}3389${bai}" echo -e "按任意键继续..." read -n 1 -s -r -p "" - curl -O https://raw.githubusercontent.com/bin456789/reinstall/main/reinstall.sh + curl -O "${GITHUB_RAW_URL}/bin456789/reinstall/main/reinstall.sh" } while true; do @@ -790,13 +667,13 @@ bbrv3() { update-grub # wget -qO - https://dl.xanmod.org/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes - wget -qO - https://raw.githubusercontent.com/kejilion/sh/main/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes + wget -qO - "${GITHUB_RAW_URL}/kejilion/sh/main/archive.key" | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes # 步骤3:添加存储库 echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | tee /etc/apt/sources.list.d/xanmod-release.list # version=$(wget -q https://dl.xanmod.org/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') - version=$(wget -q https://raw.githubusercontent.com/kejilion/sh/main/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') + version=$(wget -q "${GITHUB_RAW_URL}/kejilion/sh/main/check_x86-64_psabi.sh" && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') apt update -y apt install -y linux-xanmod-x64v$version @@ -860,13 +737,13 @@ bbrv3() { install wget gnupg # wget -qO - https://dl.xanmod.org/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes - wget -qO - https://raw.githubusercontent.com/kejilion/sh/main/archive.key | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes + wget -qO - "${GITHUB_RAW_URL}/kejilion/sh/main/archive.key" | gpg --dearmor -o /usr/share/keyrings/xanmod-archive-keyring.gpg --yes # 步骤3:添加存储库 echo 'deb [signed-by=/usr/share/keyrings/xanmod-archive-keyring.gpg] http://deb.xanmod.org releases main' | tee /etc/apt/sources.list.d/xanmod-release.list # version=$(wget -q https://dl.xanmod.org/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') - version=$(wget -q https://raw.githubusercontent.com/kejilion/sh/main/check_x86-64_psabi.sh && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') + version=$(wget -q "${GITHUB_RAW_URL}/kejilion/sh/main/check_x86-64_psabi.sh" && chmod +x check_x86-64_psabi.sh && ./check_x86-64_psabi.sh | grep -oP 'x86-64-v\K\d+|x86-64-v\d+') apt update -y apt install -y linux-xanmod-x64v$version @@ -913,12 +790,9 @@ echo "------------------------" echo "1. 系统信息查询" echo "2. 系统更新" echo "3. 系统清理" -echo "4. 常用工具 ▶" echo "5. BBR管理 ▶" -echo "6. Docker管理 ▶ " echo "7. WARP管理 ▶ " echo "8. 测试脚本合集 ▶ " -echo "12. 我的工作区 ▶ " echo "13. 系统工具 ▶ " echo "14. VPS集群控制 ▶ " echo "------------------------" @@ -1047,211 +921,6 @@ case $choice in linux_clean ;; - 4) - while true; do - clear - echo "▶ 安装常用工具" - echo "------------------------" - echo "1. curl 下载工具" - echo "2. wget 下载工具" - echo "3. sudo 超级管理权限工具" - echo "4. socat 通信连接工具" - echo "5. htop 系统监控工具" - echo "6. iftop 网络流量监控工具" - echo "7. unzip ZIP压缩解压工具" - echo "8. tar GZ压缩解压工具" - echo "9. tmux 多路后台运行工具" - echo "10. ffmpeg 视频编码直播推流工具" - echo "11. btop 现代化监控工具" - echo "12. ranger 文件管理工具" - echo "13. gdu 磁盘占用查看工具" - echo "14. fzf 全局搜索工具" - echo "------------------------" - echo "21. cmatrix 黑客帝国屏保" - echo "22. sl 跑火车屏保" - echo "------------------------" - echo "26. 俄罗斯方块小游戏" - echo "27. 贪吃蛇小游戏" - echo "28. 太空入侵者小游戏" - echo "------------------------" - echo "31. 全部安装" - echo "32. 全部卸载" - echo "------------------------" - echo "41. 安装指定工具" - echo "42. 卸载指定工具" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - install curl - clear - echo "工具已安装,使用方法如下:" - curl --help - ;; - 2) - clear - install wget - clear - echo "工具已安装,使用方法如下:" - wget --help - ;; - 3) - clear - install sudo - clear - echo "工具已安装,使用方法如下:" - sudo --help - ;; - 4) - clear - install socat - clear - echo "工具已安装,使用方法如下:" - socat -h - ;; - 5) - clear - install htop - clear - htop - ;; - 6) - clear - install iftop - clear - iftop - ;; - 7) - clear - install unzip - clear - echo "工具已安装,使用方法如下:" - unzip - ;; - 8) - clear - install tar - clear - echo "工具已安装,使用方法如下:" - tar --help - ;; - 9) - clear - install tmux - clear - echo "工具已安装,使用方法如下:" - tmux --help - ;; - 10) - clear - install ffmpeg - clear - echo "工具已安装,使用方法如下:" - ffmpeg --help - ;; - - 11) - clear - install btop - clear - btop - ;; - 12) - clear - install ranger - cd / - clear - ranger - cd ~ - ;; - 13) - clear - install gdu - cd / - clear - gdu - cd ~ - ;; - 14) - clear - install fzf - cd / - clear - fzf - cd ~ - ;; - - 21) - clear - install cmatrix - clear - cmatrix - ;; - 22) - clear - install sl - clear - /usr/games/sl - ;; - 26) - clear - install bastet - clear - /usr/games/bastet - ;; - 27) - clear - install nsnake - clear - /usr/games/nsnake - ;; - 28) - clear - install ninvaders - clear - /usr/games/ninvaders - - ;; - - 31) - clear - install curl wget sudo socat htop iftop unzip tar tmux ffmpeg btop ranger gdu fzf cmatrix sl bastet nsnake ninvaders - ;; - - 32) - clear - remove htop iftop unzip tmux ffmpeg btop ranger gdu fzf cmatrix sl bastet nsnake ninvaders - ;; - - 41) - clear - read -p "请输入安装的工具名(wget curl sudo htop): " installname - install $installname - ;; - 42) - clear - read -p "请输入卸载的工具名(htop ufw tmux cmatrix): " removename - remove $removename - ;; - - 0) - kejilion - - ;; - - *) - echo "无效的输入!" - ;; - esac - break_end - done - - ;; - 5) clear if [ -f "/etc/alpine-release" ]; then @@ -1293,408 +962,13 @@ case $choice in done else install wget - wget --no-check-certificate -O tcpx.sh https://raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master/tcpx.sh + wget --no-check-certificate -O tcpx.sh "${GITHUB_RAW_URL}/ylx2016/Linux-NetSpeed/master/tcpx.sh" chmod +x tcpx.sh ./tcpx.sh fi ;; - 6) - while true; do - clear - echo "▶ Docker管理器" - echo "------------------------" - echo "1. 安装更新Docker环境" - echo "------------------------" - echo "2. 查看Docker全局状态" - echo "------------------------" - echo "3. Docker容器管理 ▶" - echo "4. Docker镜像管理 ▶" - echo "5. Docker网络管理 ▶" - echo "6. Docker卷管理 ▶" - echo "------------------------" - echo "7. 清理无用的docker容器和镜像网络数据卷" - echo "------------------------" - echo "8. 更换Docker源" - echo "9. 编辑daemon.json文件" - echo "------------------------" - echo "11. 开启Docker-ipv6访问" - echo "12. 关闭Docker-ipv6访问" - echo "------------------------" - echo "20. 卸载Docker环境" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - clear - install_add_docker - - ;; - 2) - clear - echo "Docker版本" - docker -v - docker compose version - - echo "" - echo "Docker镜像列表" - docker image ls - echo "" - echo "Docker容器列表" - docker ps -a - echo "" - echo "Docker卷列表" - docker volume ls - echo "" - echo "Docker网络列表" - docker network ls - echo "" - - ;; - 3) - while true; do - clear - echo "Docker容器列表" - docker ps -a - echo "" - echo "容器操作" - echo "------------------------" - echo "1. 创建新的容器" - echo "------------------------" - echo "2. 启动指定容器 6. 启动所有容器" - echo "3. 停止指定容器 7. 暂停所有容器" - echo "4. 删除指定容器 8. 删除所有容器" - echo "5. 重启指定容器 9. 重启所有容器" - echo "------------------------" - echo "11. 进入指定容器 12. 查看容器日志 13. 查看容器网络" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入创建命令: " dockername - $dockername - ;; - - 2) - read -p "请输入容器名: " dockername - docker start $dockername - ;; - 3) - read -p "请输入容器名: " dockername - docker stop $dockername - ;; - 4) - read -p "请输入容器名: " dockername - docker rm -f $dockername - ;; - 5) - read -p "请输入容器名: " dockername - docker restart $dockername - ;; - 6) - docker start $(docker ps -a -q) - ;; - 7) - docker stop $(docker ps -q) - ;; - 8) - read -p "$(echo -e "${hong}确定删除所有容器吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker rm -f $(docker ps -a -q) - ;; - [Nn]) - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - 9) - docker restart $(docker ps -q) - ;; - 11) - read -p "请输入容器名: " dockername - docker exec -it $dockername /bin/sh - break_end - ;; - 12) - read -p "请输入容器名: " dockername - docker logs $dockername - break_end - ;; - 13) - echo "" - container_ids=$(docker ps -q) - - echo "------------------------------------------------------------" - printf "%-25s %-25s %-25s\n" "容器名称" "网络名称" "IP地址" - - for container_id in $container_ids; do - container_info=$(docker inspect --format '{{ .Name }}{{ range $network, $config := .NetworkSettings.Networks }} {{ $network }} {{ $config.IPAddress }}{{ end }}' "$container_id") - - container_name=$(echo "$container_info" | awk '{print $1}') - network_info=$(echo "$container_info" | cut -d' ' -f2-) - - while IFS= read -r line; do - network_name=$(echo "$line" | awk '{print $1}') - ip_address=$(echo "$line" | awk '{print $2}') - - printf "%-20s %-20s %-15s\n" "$container_name" "$network_name" "$ip_address" - done <<< "$network_info" - done - - break_end - ;; - - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - 4) - while true; do - clear - echo "Docker镜像列表" - docker image ls - echo "" - echo "镜像操作" - echo "------------------------" - echo "1. 获取指定镜像 3. 删除指定镜像" - echo "2. 更新指定镜像 4. 删除所有镜像" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入镜像名: " dockername - docker pull $dockername - ;; - 2) - read -p "请输入镜像名: " dockername - docker pull $dockername - ;; - 3) - read -p "请输入镜像名: " dockername - docker rmi -f $dockername - ;; - 4) - read -p "$(echo -e "${hong}确定删除所有镜像吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker rmi -f $(docker images -q) - ;; - [Nn]) - - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - - 5) - while true; do - clear - echo "Docker网络列表" - echo "------------------------------------------------------------" - docker network ls - echo "" - - echo "------------------------------------------------------------" - container_ids=$(docker ps -q) - printf "%-25s %-25s %-25s\n" "容器名称" "网络名称" "IP地址" - - for container_id in $container_ids; do - container_info=$(docker inspect --format '{{ .Name }}{{ range $network, $config := .NetworkSettings.Networks }} {{ $network }} {{ $config.IPAddress }}{{ end }}' "$container_id") - - container_name=$(echo "$container_info" | awk '{print $1}') - network_info=$(echo "$container_info" | cut -d' ' -f2-) - - while IFS= read -r line; do - network_name=$(echo "$line" | awk '{print $1}') - ip_address=$(echo "$line" | awk '{print $2}') - - printf "%-20s %-20s %-15s\n" "$container_name" "$network_name" "$ip_address" - done <<< "$network_info" - done - - echo "" - echo "网络操作" - echo "------------------------" - echo "1. 创建网络" - echo "2. 加入网络" - echo "3. 退出网络" - echo "4. 删除网络" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "设置新网络名: " dockernetwork - docker network create $dockernetwork - ;; - 2) - read -p "加入网络名: " dockernetwork - read -p "那些容器加入该网络: " dockername - docker network connect $dockernetwork $dockername - echo "" - ;; - 3) - read -p "退出网络名: " dockernetwork - read -p "那些容器退出该网络: " dockername - docker network disconnect $dockernetwork $dockername - echo "" - ;; - - 4) - read -p "请输入要删除的网络名: " dockernetwork - docker network rm $dockernetwork - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - - 6) - while true; do - clear - echo "Docker卷列表" - docker volume ls - echo "" - echo "卷操作" - echo "------------------------" - echo "1. 创建新卷" - echo "2. 删除卷" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "设置新卷名: " dockerjuan - docker volume create $dockerjuan - - ;; - 2) - read -p "输入删除卷名: " dockerjuan - docker volume rm $dockerjuan - - ;; - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - esac - done - ;; - 7) - clear - read -p "$(echo -e "${huang}确定清理无用的镜像容器网络吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker system prune -af --volumes - ;; - [Nn]) - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - 8) - clear - bash <(curl -sSL https://linuxmirrors.cn/docker.sh) - ;; - - 9) - clear - install nano - mkdir -p /etc/docker && nano /etc/docker/daemon.json - if command -v dnf &>/dev/null || command -v yum &>/dev/null; then - systemctl restart docker - else - service docker restart - fi - ;; - - 11) - clear - docker_ipv6_on - ;; - - 12) - clear - docker_ipv6_off - ;; - - 20) - clear - read -p "$(echo -e "${hong}确定卸载docker环境吗?(Y/N): ${bai}")" choice - case "$choice" in - [Yy]) - docker rm $(docker ps -a -q) && docker rmi $(docker images -q) && docker network prune - remove docker > /dev/null 2>&1 - ;; - [Nn]) - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - ;; - - 0) - kejilion - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - - done - - ;; - - 7) clear install wget @@ -1759,7 +1033,7 @@ case $choice in ;; 12) clear - curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh | bash + curl "${GITHUB_RAW_URL}/zhucaidan/mtr_trace/main/mtr_trace.sh" | bash ;; 13) clear @@ -1799,7 +1073,7 @@ case $choice in 16) clear - curl https://raw.githubusercontent.com/ludashi2020/backtrace/main/install.sh -sSf | sh + curl "${GITHUB_RAW_URL}/ludashi2020/backtrace/main/install.sh" -sSf | sh ;; 17) @@ -1844,166 +1118,26 @@ case $choice in done ;; - 12) - while true; do - clear - echo "▶ 我的工作区" - echo "系统将为你提供可以后台常驻运行的工作区,你可以用来执行长时间的任务" - echo "即使你断开SSH,工作区中的任务也不会中断,后台常驻任务。" - echo -e "${huang}注意: 进入工作区后使用Ctrl+b再单独按d,退出工作区!${bai}" - echo "------------------------" - echo "1. 1号工作区" - echo "2. 2号工作区" - echo "3. 3号工作区" - echo "4. 4号工作区" - echo "5. 5号工作区" - echo "6. 6号工作区" - echo "7. 7号工作区" - echo "8. 8号工作区" - echo "9. 9号工作区" - echo "10. 10号工作区" - echo "11. 自定义工作区" - echo "------------------------" - echo "99. 工作区状态管理" - echo "------------------------" - echo "0. 返回主菜单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - - 1) - clear - install tmux - SESSION_NAME="work1" - tmux_run - - ;; - 2) - clear - install tmux - SESSION_NAME="work2" - tmux_run - ;; - 3) - clear - install tmux - SESSION_NAME="work3" - tmux_run - ;; - 4) - clear - install tmux - SESSION_NAME="work4" - tmux_run - ;; - 5) - clear - install tmux - SESSION_NAME="work5" - tmux_run - ;; - 6) - clear - install tmux - SESSION_NAME="work6" - tmux_run - ;; - 7) - clear - install tmux - SESSION_NAME="work7" - tmux_run - ;; - 8) - clear - install tmux - SESSION_NAME="work8" - tmux_run - ;; - 9) - clear - install tmux - SESSION_NAME="work9" - tmux_run - ;; - 10) - clear - install tmux - SESSION_NAME="work10" - tmux_run - ;; - - 11) - clear - install tmux - clear - echo "当前已存在的工作区列表" - echo "------------------------" - tmux list-sessions - echo "------------------------" - read -p "请输入您自定义的工作区名称,如1001 kj001 work10: " SESSION_NAME - tmux_run - ;; - - 99) - while true; do - clear - echo "当前已存在的工作区列表" - echo "------------------------" - tmux list-sessions - echo "------------------------" - - read -p "1. 删除指定工作区 0. 退出: " gongzuoqu_del - case "$gongzuoqu_del" in - 1) - read -p "请输入要删除的工作区名称: " gongzuoqu_name - tmux kill-window -t $gongzuoqu_name - ;; - 0) - break - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - done - - ;; - 0) - kejilion - ;; - *) - echo "无效的输入!" - ;; - esac - break_end - - done - ;; - 13) while true; do clear echo "▶ 系统工具" echo "------------------------" echo "1. 设置脚本启动快捷键 2. 修改登录密码" - echo "3. ROOT密码登录模式 4. 安装Python指定版本" - echo "5. 开放所有端口 6. 修改SSH连接端口" + echo "4. 安装Python指定版本" echo "7. 优化DNS地址 8. 一键重装系统" - echo "9. 禁用ROOT账户创建新账户 10. 切换优先ipv4/ipv6" + echo "10. 切换优先ipv4/ipv6" echo "------------------------" echo "11. 查看端口占用状态 12. 修改虚拟内存大小" echo "13. 用户管理 14. 用户/密码生成器" echo "15. 系统时区调整 16. 设置BBR3加速" - echo "17. 防火墙高级管理器 18. 修改主机名" + echo "18. 修改主机名" echo "19. 切换系统更新源 20. 定时任务管理" echo "------------------------" echo "21. 本机host解析 22. fail2banSSH防御程序" - echo "23. 限流自动关机 24. ROOT私钥登录模式" - echo "25. TG-bot系统监控预警 26. 修复OoenSSH高危漏洞(岫源)" + echo "23. 限流自动关机" echo "------------------------" - echo "31. 留言板 66. 一条龙系统调优" + echo "31. 留言板" echo "------------------------" echo "99. 重启服务器" echo "------------------------" @@ -2025,11 +1159,6 @@ case $choice in echo "设置你的登录密码" passwd ;; - 3) - root_use - add_sshpasswd - ;; - 4) root_use VERSION=$(python3 -V 2>&1 | awk '{print $2}') @@ -2100,35 +1229,6 @@ EOF ;; - 5) - root_use - iptables_open - remove iptables-persistent ufw firewalld iptables-services > /dev/null 2>&1 - echo "端口已全部开放" - - ;; - 6) - root_use - - # 去掉 #Port 的注释 - sed -i 's/#Port/Port/' /etc/ssh/sshd_config - - # 读取当前的 SSH 端口号 - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - # 打印当前的 SSH 端口号 - echo "当前的 SSH 端口号是: $current_port" - - echo "------------------------" - - # 提示用户输入新的 SSH 端口号 - read -p "请输入新的 SSH 端口号: " new_port - - new_ssh_port - - ;; - - 7) root_use echo "当前DNS地址" @@ -2177,26 +1277,6 @@ EOF 8) dd_xitong ;; - 9) - root_use - - # 提示用户输入新用户名 - read -p "请输入新用户名: " new_username - - # 创建新用户并设置密码 - useradd -m -s /bin/bash "$new_username" - passwd "$new_username" - - # 赋予新用户sudo权限 - echo "$new_username ALL=(ALL:ALL) ALL" | sudo tee -a /etc/sudoers - - # 禁用ROOT用户登录 - passwd -l root - - echo "操作已完成。" - ;; - - 10) root_use ipv6_disabled=$(sysctl -n net.ipv6.conf.all.disable_ipv6) @@ -2474,173 +1554,6 @@ EOF bbrv3 ;; - 17) - root_use - if dpkg -l | grep -q iptables-persistent; then - while true; do - echo "防火墙已安装" - echo "------------------------" - iptables -L INPUT - - echo "" - echo "防火墙管理" - echo "------------------------" - echo "1. 开放指定端口 2. 关闭指定端口" - echo "3. 开放所有端口 4. 关闭所有端口" - echo "------------------------" - echo "5. IP白名单 6. IP黑名单" - echo "7. 清除指定IP" - echo "------------------------" - echo "9. 卸载防火墙" - echo "------------------------" - echo "0. 返回上一级选单" - echo "------------------------" - read -p "请输入你的选择: " sub_choice - - case $sub_choice in - 1) - read -p "请输入开放的端口号: " o_port - sed -i "/COMMIT/i -A INPUT -p tcp --dport $o_port -j ACCEPT" /etc/iptables/rules.v4 - sed -i "/COMMIT/i -A INPUT -p udp --dport $o_port -j ACCEPT" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - - ;; - 2) - read -p "请输入关闭的端口号: " c_port - sed -i "/--dport $c_port/d" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - ;; - - 3) - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - cat > /etc/iptables/rules.v4 << EOF -*filter -:INPUT ACCEPT [0:0] -:FORWARD ACCEPT [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -i lo -j ACCEPT --A FORWARD -i lo -j ACCEPT --A INPUT -p tcp --dport $current_port -j ACCEPT -COMMIT -EOF - iptables-restore < /etc/iptables/rules.v4 - - ;; - 4) - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - cat > /etc/iptables/rules.v4 << EOF -*filter -:INPUT DROP [0:0] -:FORWARD DROP [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -i lo -j ACCEPT --A FORWARD -i lo -j ACCEPT --A INPUT -p tcp --dport $current_port -j ACCEPT -COMMIT -EOF - iptables-restore < /etc/iptables/rules.v4 - - ;; - - 5) - read -p "请输入放行的IP: " o_ip - sed -i "/COMMIT/i -A INPUT -s $o_ip -j ACCEPT" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - - ;; - - 6) - read -p "请输入封锁的IP: " c_ip - sed -i "/COMMIT/i -A INPUT -s $c_ip -j DROP" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - ;; - - 7) - read -p "请输入清除的IP: " d_ip - sed -i "/-A INPUT -s $d_ip/d" /etc/iptables/rules.v4 - iptables-restore < /etc/iptables/rules.v4 - ;; - - 9) - remove iptables-persistent - rm /etc/iptables/rules.v4 - break - ;; - - 0) - break # 跳出循环,退出菜单 - ;; - - *) - break # 跳出循环,退出菜单 - ;; - - esac - done - else - - clear - echo "将为你安装防火墙,该防火墙仅支持Debian/Ubuntu" - echo "------------------------------------------------" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - if [ -r /etc/os-release ]; then - . /etc/os-release - if [ "$ID" != "debian" ] && [ "$ID" != "ubuntu" ]; then - echo "当前环境不支持,仅支持Debian和Ubuntu系统" - break - fi - else - echo "无法确定操作系统类型" - break - fi - - clear - iptables_open - remove iptables-persistent ufw - rm /etc/iptables/rules.v4 - - apt update -y && apt install -y iptables-persistent - - current_port=$(grep -E '^ *Port [0-9]+' /etc/ssh/sshd_config | awk '{print $2}') - - cat > /etc/iptables/rules.v4 << EOF -*filter -:INPUT DROP [0:0] -:FORWARD DROP [0:0] -:OUTPUT ACCEPT [0:0] --A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT --A INPUT -i lo -j ACCEPT --A FORWARD -i lo -j ACCEPT --A INPUT -p tcp --dport $current_port -j ACCEPT -COMMIT -EOF - - iptables-restore < /etc/iptables/rules.v4 - systemctl enable netfilter-persistent - echo "防火墙安装完成" - - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - fi - ;; - 18) root_use current_hostname=$(hostname) @@ -3096,7 +2009,7 @@ EOF echo "如果实际服务器就100G流量,可设置阈值为95G,提前关机,以免出现流量误差或溢出." read -p "请输入流量阈值(单位为GB): " threshold_gb cd ~ - curl -Ss -O https://raw.githubusercontent.com/kejilion/sh/main/Limiting_Shut_down.sh + curl -Ss -O "${GITHUB_RAW_URL}/kejilion/sh/main/Limiting_Shut_down.sh" chmod +x ~/Limiting_Shut_down.sh sed -i "s/110/$threshold_gb/g" ~/Limiting_Shut_down.sh crontab -l | grep -v '~/Limiting_Shut_down.sh' | crontab - @@ -3123,89 +2036,6 @@ EOF ;; - 24) - root_use - echo "ROOT私钥登录模式" - echo "------------------------------------------------" - echo "将会生成密钥对,更安全的方式SSH登录" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - clear - add_sshkey - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - 25) - root_use - echo "TG-bot监控预警功能" - echo "------------------------------------------------" - echo "您需要配置tg机器人API和接收预警的用户ID,即可实现本机CPU,内存,硬盘,流量,SSH登录的实时监控预警" - echo "到达阈值后会向用户发预警消息" - echo -e "${hui}-关于流量,重启服务器将重新计算-${bai}" - read -p "确定继续吗?(Y/N): " choice - - case "$choice" in - [Yy]) - cd ~ - install nano tmux bc jq - if [ -f ~/TG-check-notify.sh ]; then - chmod +x ~/TG-check-notify.sh - nano ~/TG-check-notify.sh - else - curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/TG-check-notify.sh - chmod +x ~/TG-check-notify.sh - nano ~/TG-check-notify.sh - fi - tmux kill-session -t TG-check-notify > /dev/null 2>&1 - tmux new -d -s TG-check-notify "~/TG-check-notify.sh" - crontab -l | grep -v '~/TG-check-notify.sh' | crontab - > /dev/null 2>&1 - (crontab -l ; echo "@reboot tmux new -d -s TG-check-notify '~/TG-check-notify.sh'") | crontab - > /dev/null 2>&1 - - curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/TG-SSH-check-notify.sh > /dev/null 2>&1 - sed -i "3i$(grep '^TELEGRAM_BOT_TOKEN=' ~/TG-check-notify.sh)" TG-SSH-check-notify.sh > /dev/null 2>&1 - sed -i "4i$(grep '^CHAT_ID=' ~/TG-check-notify.sh)" TG-SSH-check-notify.sh - chmod +x ~/TG-SSH-check-notify.sh - - # 添加到 ~/.profile 文件中 - if ! grep -q 'bash ~/TG-SSH-check-notify.sh' ~/.profile > /dev/null 2>&1; then - echo 'bash ~/TG-SSH-check-notify.sh' >> ~/.profile - fi - - source ~/.profile - - clear - echo "TG-bot预警系统已启动" - echo -e "${hui}你还可以将root目录中的TG-check-notify.sh预警文件放到其他机器上直接使用!${bai}" - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - - 26) - root_use - cd ~ - curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/upgrade_openssh9.8p1.sh - chmod +x ~/upgrade_openssh9.8p1.sh - ~/upgrade_openssh9.8p1.sh - rm -f ~/upgrade_openssh9.8p1.sh - ;; - 31) clear install sshpass @@ -3244,82 +2074,6 @@ EOF ;; - 66) - - root_use - echo "一条龙系统调优" - echo "------------------------------------------------" - echo "将对以下内容进行操作与优化" - echo "1. 更新系统到最新" - echo "2. 清理系统垃圾文件" - echo -e "3. 设置虚拟内存${huang}1G${bai}" - echo -e "4. 设置SSH端口号为${huang}5522${bai}" - echo -e "5. 开放所有端口" - echo -e "6. 开启${huang}BBR${bai}加速" - echo -e "7. 设置时区到${huang}上海${bai}" - echo -e "8. 优化DNS地址到${huang}1111 8888${bai}" - echo -e "9. 安装常用工具${huang}docker wget sudo tar unzip socat btop${bai}" - echo "------------------------------------------------" - read -p "确定一键保养吗?(Y/N): " choice - - case "$choice" in - [Yy]) - clear - - echo "------------------------------------------------" - linux_update - echo -e "[${lv}OK${bai}] 1/9. 更新系统到最新" - - echo "------------------------------------------------" - linux_clean - echo -e "[${lv}OK${bai}] 2/9. 清理系统垃圾文件" - - echo "------------------------------------------------" - new_swap=1024 - add_swap - echo -e "[${lv}OK${bai}] 3/9. 设置虚拟内存${huang}1G${bai}" - - echo "------------------------------------------------" - new_port=5522 - new_ssh_port - echo -e "[${lv}OK${bai}] 4/9. 设置SSH端口号为${huang}5522${bai}" - echo "------------------------------------------------" - echo -e "[${lv}OK${bai}] 5/9. 开放所有端口" - - echo "------------------------------------------------" - bbr_on - echo -e "[${lv}OK${bai}] 6/9. 开启${huang}BBR${bai}加速" - - echo "------------------------------------------------" - set_timedate Asia/Shanghai - echo -e "[${lv}OK${bai}] 7/9. 设置时区到${huang}上海${bai}" - - echo "------------------------------------------------" - dns1_ipv4="1.1.1.1" - dns2_ipv4="8.8.8.8" - dns1_ipv6="2606:4700:4700::1111" - dns2_ipv6="2001:4860:4860::8888" - set_dns - echo -e "[${lv}OK${bai}] 8/9. 优化DNS地址到${huang}1111 8888${bai}" - - echo "------------------------------------------------" - install_add_docker - install wget sudo tar unzip socat btop - echo -e "[${lv}OK${bai}] 9/9. 安装常用工具${huang}docker wget sudo tar unzip socat btop${bai}" - echo "------------------------------------------------" - echo -e "${lv}一条龙系统调优已完成${bai}" - - ;; - [Nn]) - echo "已取消" - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - ;; - esac - - ;; - 99) clear server_reboot @@ -3383,7 +2137,7 @@ EOF echo "1. 添加服务器 2. 删除服务器 3. 编辑服务器" echo "------------------------" echo "11. 安装科技lion脚本 12. 更新系统 13. 清理系统" - echo "14. 安装docker 15. 安装BBR3 16. 设置1G虚拟内存" + echo "15. 安装BBR3 16. 设置1G虚拟内存" echo "17. 设置时区到上海 18. 开放所有端口" echo "------------------------" echo "51. 自定义指令" @@ -3425,10 +2179,6 @@ EOF py_task=clean.py cluster_python3 ;; - 14) - py_task=install_docker.py - cluster_python3 - ;; 15) py_task=install_bbr3.py cluster_python3 @@ -3450,7 +2200,7 @@ EOF read -p "请输入批量执行的命令: " mingling py_task=custom_tasks.py cd ~/cluster/ - curl -sS -O https://raw.githubusercontent.com/kejilion/python-for-vps/main/cluster/$py_task + curl -sS -O "${GITHUB_RAW_URL}/kejilion/python-for-vps/main/cluster/${py_task}" sed -i "s#Customtasks#$mingling#g" ~/cluster/$py_task python3 ~/cluster/$py_task ;; @@ -3521,11 +2271,11 @@ EOF clear echo "更新日志" echo "------------------------" - echo "全部日志: https://raw.githubusercontent.com/kejilion/sh/main/kejilion_sh_log.txt" + echo "全部日志: ${GITHUB_RAW_URL}/kejilion/sh/main/kejilion_sh_log.txt" echo "------------------------" - curl -s https://raw.githubusercontent.com/kejilion/sh/main/kejilion_sh_log.txt | tail -n 35 + curl -s "${GITHUB_RAW_URL}/kejilion/sh/main/kejilion_sh_log.txt" | tail -n 35 - sh_v_new=$(curl -s https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh | grep -o 'sh_v="[0-9.]*"' | cut -d '"' -f 2) + sh_v_new=$(curl -s "${GITHUB_RAW_URL}/kejilion/sh/main/kejilion.sh" | grep -o 'sh_v="[0-9.]*"' | cut -d '"' -f 2) if [ "$sh_v" = "$sh_v_new" ]; then echo -e "${lv}你已经是最新版本!${huang}v$sh_v${bai}" @@ -3537,7 +2287,7 @@ EOF case "$choice" in [Yy]) clear - curl -sS -O https://raw.githubusercontent.com/kejilion/sh/main/kejilion.sh && chmod +x kejilion.sh + curl -sS -O "${GITHUB_RAW_URL}/kejilion/sh/main/kejilion.sh" && chmod +x kejilion.sh cp ./kejilion.sh /usr/local/bin/k > /dev/null 2>&1 echo -e "${lv}脚本已更新到最新版本!${huang}v$sh_v_new${bai}" break_end diff --git a/optimized_php.ini b/optimized_php.ini deleted file mode 100644 index 8b13789..0000000 --- a/optimized_php.ini +++ /dev/null @@ -1 +0,0 @@ - diff --git a/update_log.sh b/update_log.sh deleted file mode 100644 index b671319..0000000 --- a/update_log.sh +++ /dev/null @@ -1,422 +0,0 @@ - clear - echo "脚本更新日志" - echo "------------------------" - echo "2023-8-13 v1.0.3" - echo "1.甲骨文云的DD脚本,添加了Ubuntu 20.04的重装选项。" - echo "2.LDNMP建站,开放了苹果CMS网站的搭建功能." - echo "3.系统信息查询,增加了内核版本显示,美化了界面。" - echo "4.甲骨文脚本中,添加了开启ROOT登录的选项。" - echo "------------------------" - echo "2023-8-13 v1.0.4" - echo "1.LDNMP建站,开放了独角数卡网站的搭建功能." - echo "2.LDNMP建站,优化了备份全站到远端服务器的稳定性." - echo "3.Docker管理,全局状态信息,添加了所有docker卷的显示." - echo "------------------------" - echo "2023-8-14 v1.1" - echo "Docker管理器全面升级,体验前所未有!" - echo "-加入了docker容器管理面板" - echo "-加入了docker镜像管理面板" - echo "-加入了docker网络管理面板" - echo "-加入了docker卷管理面板" - echo "-删除docker时追加确认信息,拒绝误操作" - echo "------------------------" - echo "2023-8-14 v1.2" - echo "1.新增了11选项,加入了常用面板工具合集!" - echo "-支持安装各种面板,包括: 宝塔,宝塔国际版,1panel,Nginx Proxy Manager等等,满足更多人群的使用需求!" - echo "2.优化了菜单效果" - echo "------------------------" - echo "2023-8-14 v1.3" - echo "新增了12选项,我的工作区功能" - echo "-将为你提供5个后台运行的工作区,用来执行后台任务。即使你断开SSH也不会中断," - echo "-非常有意思的功能,快去试试吧!" - echo "------------------------" - echo "2023-8-14 v1.3.2" - echo "新增了13选项,系统工具" - echo "科技lion一键脚本可以通过设置快捷键唤醒打开了,我设置的k作为脚本打开的快捷键!无需复制长命令了" - echo "加入了ROOT密码修改,切换成ROOT登录模式" - echo "系统设置中还有很多功能没开发,敬请期待!" - echo "------------------------" - echo "2023-8-15 v1.4" - echo "全面适配Centos系统,实现Ubuntu,Debian,Centos三大主流系统的适配" - echo "优化LDNMP中PHP输入数据最大时间,解决WordPress网站导入部分主题失败的问题" - echo "------------------------" - echo "2023-8-15 v1.4.1" - echo "选项13,系统工具中,加入了安装Python最新版的选项,感谢群友春风得意马蹄疾的投稿!很好用!" - echo "------------------------" - echo "2023-8-15 v1.4.2" - echo "docker管理中增加容器日志查看" - echo "选项13,系统工具中,加入了留言板的选项,可以留下你的宝贵意见也可以在这里聊天,贼好玩!" - echo "------------------------" - echo "2023-8-15 v1.4.5" - echo "优化了信息查询运行效率" - echo "信息查询新增了地理位置显示" - echo "优化了脚本内系统判断机制!" - echo "------------------------" - echo "2023-8-16 v1.4.6" - echo "LDNMP建站中加入了删除站点删除数据库功能" - echo "------------------------" - echo "2023-8-16 v1.4.7" - echo "选项11中,增加了一键搭建alist多存储文件列表工具的" - echo "选项11中,增加了一键搭建网页版乌班图远程桌面" - echo "选项13中,增加了开放所有端口功能" - echo "------------------------" - echo "2023-8-16 v1.4.8" - echo "系统信息查询中,终于可以显示总流量消耗了!总接收和总发送两个信息" - echo "------------------------" - echo "2023-8-17 v1.4.9" - echo "系统工具中新增SSH端口修改功能" - echo "系统工具中新增优化DNS地址功能" - echo "------------------------" - echo "2023-8-18 v1.5" - echo "系统性优化了代码,去除了无效的代码与空格" - echo "系统信息查询添加了系统时间" - echo "禁用ROOT账户,创建新的账户,更安全!" - echo "------------------------" - echo "2023-8-18 v1.5.1" - echo "LDNMP加入了安装bingchatAI聊天网站" - echo "面板工具中添加了哪吒探针脚本整合" - echo "------------------------" - echo "2023-8-18 v1.5.2" - echo "LDNMP加入了更新LDNMP选项" - echo "------------------------" - echo "2023-8-19 v1.5.3" - echo "面板工具添加安装QB离线BT磁力下载面板" - echo "优化IP获取源" - echo "------------------------" - echo "2023-8-20 v1.5.4" - echo "面板工具已安装的工具支持状态检测,可以进行删除了!" - echo "------------------------" - echo "2023-8-21 v1.5.5" - echo "系统工具中添加优先ipv4/ipv6选项" - echo "系统工具中添加查看端口占用状态选项" - echo "------------------------" - echo "2023-8-21 v1.5.6" - echo "LDNMP建站添加了定时自动远程备份功能" - echo "------------------------" - echo "2023-8-22 v1.5.7" - echo "面板工具增加了邮件服务器搭建,请确保服务器的25.80.443开放" - echo "------------------------" - echo "2023-8-23 v1.5.8" - echo "面板工具增加了聊天系统搭建" - echo "------------------------" - echo "2023-8-24 v1.5.9" - echo "面板工具增加了禅道项目管理软件搭建" - echo "------------------------" - echo "2023-8-24 v1.6" - echo "面板工具增加了青龙面板搭建" - echo "调整了面板工具列表的排版显示效果" - echo "------------------------" - echo "2023-8-27 v1.6.1" - echo "LDNMP大幅优化安装体验,添加安装进度条和百分比显示,太刁了!" - echo "------------------------" - echo "2023-8-28 v1.6.2" - echo "docker管理可以显示容器所属网络,并且可以加入网络和退出网络了" - echo "------------------------" - echo "2023-8-28 v1.6.3" - echo "系统工具中增加修改虚拟内存大小的选项" - echo "系统信息查询中显示虚拟内存占用" - echo "------------------------" - echo "2023-8-29 v1.6.4" - echo "面板工具加入cloudreve网盘的搭建" - echo "面板工具加入简单图床程序搭建" - echo "------------------------" - echo "2023-8-29 v1.6.5" - echo "LDNMP加入了高逼格的flarum论坛搭建" - echo "面板工具加入简单图床程序搭建" - echo "------------------------" - echo "2023-9-1 v1.6.6" - echo "LDNMP环境安装时用户密码将随机生成,提升安全性,安装环境更简单!" - echo "LDNMP环境安装时如果安装过docker将自动跳过,节省安装时间" - echo "LDNMP环境更新WordPress到6.3.1版本" - echo "------------------------" - echo "2023-9-1 v1.6.7" - echo "添加了账户管理功能,查看当前账户列表,添加删除账户,账号权限管理等" - echo "------------------------" - echo "2023-9-4 v1.6.8" - echo "独角数卡登录时报错,显示解决办法" - echo "------------------------" - echo "2023-9-6 v1.6.9" - echo "系统工具中添加随机用户密码生成器,方便懒得想用户名和密码的小伙伴" - echo "优化了所有搭建网站与面板后的信息复制体验" - echo "------------------------" - echo "2023-9-11 v1.7" - echo "面板工具中添加emby多媒体管理系统的搭建" - echo "------------------------" - echo "2023-9-15 v1.7.1" - echo "LDNMP建站中可以搭建Bitwarden密码管理平台了" - echo "------------------------" - echo "2023-9-18 v1.7.2" - echo "LDNMP建站将站点信息查询和站点管理合并" - echo "LDNMP站点管理中添加证书重新申请和站点更换域名的功能" - echo "------------------------" - echo "2023-9-25 v1.8" - echo "LDNMP建站增加了服务器与网站防护功能,防御暴力破解,防御网站被攻击" - echo "------------------------" - echo "2023-9-28 v1.8.2" - echo "LDNMP建站优化了运行速度和安全性,增加了频率限制" - echo "LDNMP建站优化了防御程序的高可用性" - echo "------------------------" - echo "2023-10-3 v1.8.3" - echo "系统工具增加系统时区切换功能" - echo "------------------------" - echo "2023-10-7 v1.8.4" - echo "LDNMP建站添加halo博客网站搭建" - echo "------------------------" - echo "2023-10-12 v1.8.5" - echo "LDNMP建站添加优化LDNMP环境选项,可以开启高性能模式,大幅提升网站性能,应对高并发!" - echo "------------------------" - echo "2023-10-14 v1.8.6" - echo "面板工具增加了测速流量监控面板的安装" - echo "------------------------" - echo "2023-10-16 v1.8.7" - echo "系统工具中添加开启BBR3加速功能" - echo "------------------------" - echo "2023-10-18 v1.8.8" - echo "系统工具中优化BBR3加速安装流程,可根据CPU型号自行安装适合的内核版本" - echo "------------------------" - echo "2023-10-19 v1.8.9" - echo "系统工具中BBRv3功能增加了更新内核和卸载内核功能" - echo "------------------------" - echo "2023-10-21 v1.9" - echo "开放端口相关优化" - echo "解决部分系统SSH端口切换后重启失联的问题" - echo "------------------------" - echo "2023-10-26 v1.9.1" - echo "LNMP建站管理中添加了站点缓存清理功能" - echo "面板工具中卸载对应应用时添加了应用目录一并删除,删除更彻底!" - echo "------------------------" - echo "2023-10-28 v1.9.2" - echo "系统工具中修复了虚拟内存大小重启后还原的问题" - echo "------------------------" - echo "2023-11-07 v1.9.3" - echo "面板工具中增加AdGuardHome去广告软件安装和管理" - echo "------------------------" - echo "2023-11-08 v1.9.4" - echo "系统工具添加了防火墙高级管理功能,可以开关端口,可以IP黑白名单" - echo "未来会上线地域黑白名单等高级功能" - echo "------------------------" - echo "2023-11-09 v1.9.5" - echo "系统工具中防火墙添加udp控制" - echo "------------------------" - echo "2023-11-10 v1.9.6" - echo "测试脚本合集增加了缝合怪一条龙测试" - echo "系统信息查询中添加了系统运行时长显示" - echo "------------------------" - echo "2023-11-10 v1.9.7" - echo "LDNMP建站增加typecho轻量博客的搭建" - echo "------------------------" - echo "2023-11-16 v1.9.8" - echo "面板工具中增加了在线office办公软件安装" - echo "------------------------" - echo "2023-11-21 v1.9.9" - echo "面板工具中增加了雷池WAF防火墙程序安装" - echo "------------------------" - echo "2023-11-28 v2.0" - echo "LDNMP建站中增加仅安装nginx的选项专门服务于站点重定向和站点反向代理" - echo "精简无用的代码,优化执行效率" - echo "------------------------" - echo "2023-11-29 v2.0.1" - echo "LDNMP建站改用cerbot申请证书,更稳定更快速。弃用acme" - echo "------------------------" - echo "2023-11-30 v2.0.2" - echo "面板工具修复QB无法登录问题" - echo "面板工具修复RocketChat进入后无限加载问题" - echo "系统工具中添加修改主机名功能" - echo "系统工具中添加服务器重启功能" - echo "------------------------" - echo "2023-12-04 v2.0.3" - echo "LDNMP建站过程中增加了nginx自我检测修复功能" - echo "系统工具添加更新源切换功能,请先在测试环境使用" - echo "LDNMP建站增加自定义上传静态html界面功能" - echo "------------------------" - echo "2023-12-05 v2.0.4" - echo "LDNMP建站中仅安装nginx功能添加安装成功提示,更优雅直观" - echo "LDNMP建站中仅安装nginx功能支持自动更新nginx版本" - echo "优化代码细节,定义调用函数,脚本执行更简洁,提升效率" - echo "------------------------" - echo "2023-12-07 v2.0.5" - echo "LDNMP在站点数据管理中增加查看站点分析报告功能,可以对网站流量进行监控与分析" - echo "主菜单添加手动更新脚本功能" - echo "------------------------" - echo "2023-12-08 v2.0.6" - echo "主菜单中更新日志和脚本更新合并,更新时可以看到更新日志,更直觉" - echo "面板工具中新增了docker管理面板portainer的安装" - echo "面板工具中新增了VScode网页版的安装" - echo "------------------------" - echo "2023-12-15 v2.0.7" - echo "系统工具中添加了定时任务的管理功能" - echo "------------------------" - echo "2023-12-16 v2.0.8" - echo "大量安装软件的代码整合更简单快速安装各类软件包" - echo "优化选项4中的常用工具安装及使用体验,已安装可以提示使用方法" - echo "选项4中新增多款实用工具,如btop现代化监控工具,安装即用,q退出" - echo "------------------------" - echo "2023-12-18 v2.0.9" - echo "优化安装代码,全局调用,安装智能检测,安装软件更快" - echo "------------------------" - echo "2023-12-19 v2.1" - echo "选项4中,新增自定义安装卸载指定的工具" - echo "优化了清理逻辑,清理系统更快更干净" - echo "优化了卸载软件包的逻辑,根据系统执行卸载,更智能" - echo "优化主菜单到二级菜单的交互,二级菜单更沉浸,二级菜单箭头引导调整" - echo "------------------------" - echo "2023-12-20 v2.1.1" - echo "史诗级代码精简,屎山大扫除,脚本运行更快速,脚本大小缩减20%" - echo "LDNMP安装环境时增加端口检测功能,端口被占用会无法安装" - echo "面板工具中添加Uptime Kuma监控工具的安装" - echo "面板工具中添加Memos网页备忘录的安装" - echo "------------------------" - echo "2023-12-23 v2.1.2" - echo "面板工具中添加潘多拉GPT镜像站安装" - echo "------------------------" - echo "2023-12-26 v2.1.3" - echo "选项4常用工具中添加跑火车屏保,俄罗斯方块,贪吃蛇,太空入侵者三款小游戏" - echo "------------------------" - echo "2023-12-30 v2.1.4" - echo "LDNMP增加了防止源站IP泄露机制,保护源站IP与证书潜在安全隐患" - echo "------------------------" - echo "2024-01-04 v2.1.5" - echo "脚本添加了启动快捷键,命令行输入k可以快速启动科技lion脚本工具" - echo "------------------------" - echo "2024-01-04 v2.1.6" - echo "脚本添加了启动快捷键,命令行输入k可以快速启动科技lion脚本工具" - echo "面板工具1panel增加了已安装状态,支持查看面板信息修改用户密码,支持卸载面板" - echo "------------------------" - echo "2024-01-06 v2.1.7" - echo "面板工具增加了nextcloud网盘的搭建" - echo "------------------------" - echo "2024-01-09 v2.1.8" - echo "LDNMP建站增加对ipv6的建站支持,解析v6地址建站据说提升站点安全性,性能也有提升!" - echo "------------------------" - echo "2024-01-10 v2.1.9" - echo "面板工具增加QD-Today定时任务管理框架的安装" - echo "------------------------" - echo "2024-01-12 v2.2" - echo "面板工具增加了Dockge容器堆栈管理面板的安装" - echo "面板工具增加了LibreSpeed轻量级测速工具的安装" - echo "优化了脚本快捷启动,输入k快速启动脚本支持任何目录下使用" - echo "------------------------" - echo "2024-01-16 v2.2.1" - echo "主菜单添加14选项,VPS集群控制系统,可以一键操控所有VPS执行任务。" - echo "VPS集群控制属于测试版本,请用闲置机器开始体验,有任何问题欢迎留言反馈" - echo "------------------------" - echo "2024-01-17 v2.2.2" - echo "面板工具增加了搜索聚合网站的安装" - echo "优化了集群控制体验,集群环境备份还原卸载等功能上线" - echo "------------------------" - echo "2024-01-18 v2.2.3" - echo "面板工具增加了私有相册系统的安装" - echo "------------------------" - echo "2024-01-21 v2.2.4" - echo "面板工具增加了PDF工具大全应用的安装" - echo "------------------------" - echo "2024-01-23 v2.2.5" - echo "优化了LDNMP建站配置时进度条体验,让读条不至于卡在一个地方很久。拆分配置环节让体验更加顺畅" - echo "------------------------" - echo "2024-01-25 v2.2.6" - echo "精简了LDNMP建站镜像大小,采用官方alpine精简镜像包,更快,更轻,更安全" - echo "脚本适配alpine系统" - echo "系统工具中重装系统选项升级,增加了Debian11 Debian10 ubuntu22.04 centos7 alpine3.19 windows11的安装选项" - echo "------------------------" - echo "2024-01-30 v2.2.7" - echo "LDNMP建站更新halo2的安装版本到2.11" - echo "修复alpine系统下虚拟内存重启后失效的问题" - echo "优化alpine系统下docker安装体验,安装docker应用时自动识别安装docker环境" - echo "修复alpine系统下CPU占用显示异常的问题" - echo "------------------------" - echo "2024-02-1 v2.2.8" - echo "主菜单临时增加p选项,与幻兽帕鲁开服脚本联动" - echo "------------------------" - echo "2024-02-5 v2.2.9" - echo "修改主机名支持alpine系统" - echo "------------------------" - echo "2024-02-8 v2.3" - echo "面板工具增加了drawio在线绘图工具的安装" - echo "------------------------" - echo "2024-02-21 v2.3.1" - echo "主菜单选项12我的工作区增加至10个,更利于多线程后台任务" - echo "------------------------" - echo "2024-02-26 v2.3.2" - echo "系统工具中的选项8中一键重装系统的体验进行优化,重装时展示系统重装后的用户名密码和端口号" - echo "一键重装系统增加了更多Windows版本重装 11 10 2019 2022" - echo "一键重装系统增加了更多版本重装" - echo "一键重装Windows系统默认为中文版了" - echo "主菜单选项5的BBR管理适配了alpine的新界面" - echo "------------------------" - echo "2024-03-06 v2.3.3" - echo "系统工具中新增了host解析设置功能" - echo "优化了alpine系统的主机名修改逻辑" - echo "------------------------" - echo "2024-03-11 v2.3.4" - echo "系统工具中新增fail2banSSH防御程序,防止你的SSH被暴力破解" - echo "------------------------" - echo "2024-03-20 v2.3.5" - echo "面板工具加入了PVE开小鸡的面板,感谢oneclickvirt大佬的一键安装脚本" - echo "------------------------" - echo "2024-03-29 v2.3.6" - echo "LDNMP安装环境时提前设置1G虚拟内存,提升建站环境安装速度和稳定性" - echo "------------------------" - echo "2024-04-01 v2.3.7" - echo "LDNMP改进了防御能力,可以拦截404攻击,守护网站安全。脚本进入选择10再选择35站点防御,防御原来这么简单!" - echo "------------------------" - echo "2024-04-02 v2.3.8" - echo "LDNMP站点防御接入cf,添加了cloudflare模式,添加了参数配置选项" - echo "------------------------" - echo "2024-04-07 v2.3.9" - echo "LDNMP申请域名证书,解决证书链不完整的问题,谢谢wuying2021分支提供思路,已整合至主线版本" - echo "------------------------" - echo "2024-04-12 v2.4" - echo "面板工具中添加了24选项 webtop远程桌面程序,alpine中文可视化桌面系统,很好用!" - echo "------------------------" - echo "2024-04-14 v2.4.1" - echo "面板工具中添加Sun-Panel导航面板的安装" - echo "LDNMP建站中halo镜像版本更新到最新版本" - echo "测试脚本合集中追加了两项,nxtrace快速回程测试脚本 nxtrace指定IP回程测试脚本" - echo "测试脚本合集中追加了两项,ludashi2020的三网线路测试" - echo "测试脚本合集界面重构,分类更清晰,方便未来扩展使用" - echo "------------------------" - echo "2024-04-18 v2.4.2" - echo "使用docker容器方式部署fail2ban防暴力破解程序,ssh和nginx都能防御" - echo "优化了重启服务器的逻辑,增加了确认提示。" - echo "增加了dnf包管理的适配" - echo "安装BBRV3,cpu测速时将自动分配1024M的虚拟内存。" - echo "------------------------" - echo "2024-04-23 v2.4.3" - echo "面板工具中添加了34选项,一个文件共享平台,可以传文件传图片,做分享链接用" - echo "------------------------" - echo "2024-04-26 v2.4.4" - echo "面板工具中添加了33选项,一个极简朋友圈网页程序,高仿微信朋友圈!" - echo "------------------------" - echo "2024-04-29 v2.4.5" - echo "系统工具中添加了限流关机功能,到达限定流量后自动关机,针对小流量怕反撸的机型而设计!" - echo "------------------------" - echo "2024-04-30 v2.4.6" - echo "LDNMP建站分类调整,将不需要安装PHP就能搭建的应用移至nginx区块中," - echo "LDNMP建站如果没装环境直接部署网站会弹出检测提示,要求先装环境再建站" - echo "缩小脚本体积,降了5kb,整合了一些老大难代码,模块化更顺畅小巧" - echo "------------------------" - echo "2024-05-04 v2.4.7" - echo "面板工具新增36选项,加入了对AI聚合聊天网站的安装" - echo "------------------------" - echo "2024-05-05 v2.4.8" - echo "LDNMP增加了自定义PHP动态站点功能,你可以上传自己的PHP项目" - echo "LDNMP站点管理中,增加了编辑查看全局和站点配置" - echo "------------------------" - echo "2024-05-09 v2.4.9" - echo "LDNMP静态站点动态站点自定义搭建优化,支持远程下载源码,手动上传源码" - echo "修改主机名大小写Y的支持" - echo "检测脚本添加了xykt大佬的IP质量体检脚本,非常美观实用的脚本" - echo "------------------------" - echo "2024-05-09 v2.4.10" - echo "更新脚本逻辑进行优化,可选择是否更新,并且显示当前和最新的版本号,更智能!" - echo "------------------------" - echo "2024-05-09 v2.5" - echo "重构并定义脚本中出现的红绿蓝黄灰白文字颜色,创建未来统一灵活调用文字颜色" - echo "面板工具中添加了MYIP工具箱面板,可以查看当前使用的IP信息与状态" - echo "------------------------" - echo "2024-05-11 v2.5.1" - echo "对docker环境检测进行优化,应用部署将会更稳定" - echo "对一些提示的文字颜色进行了优化,对一些警示文字进行红色黄色标注" - echo "------------------------" - - diff --git a/upgrade_openssh9.8p1.sh b/upgrade_openssh9.8p1.sh deleted file mode 100644 index 2cc0b30..0000000 --- a/upgrade_openssh9.8p1.sh +++ /dev/null @@ -1,154 +0,0 @@ -#!/bin/bash - -# 设置OpenSSH的版本号 -OPENSSH_VERSION="9.8p1" - - -# 检测系统类型 -if [ -f /etc/os-release ]; then - . /etc/os-release - OS=$ID -else - echo "无法检测操作系统类型。" - exit 1 -fi - -# 等待并检查锁文件 -wait_for_lock() { - while fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do - echo "等待dpkg锁释放..." - sleep 1 - done -} - -# 修复dpkg中断问题 -fix_dpkg() { - DEBIAN_FRONTEND=noninteractive dpkg --configure -a -} - -# 安装依赖包 -install_dependencies() { - case $OS in - ubuntu|debian) - wait_for_lock - fix_dpkg - DEBIAN_FRONTEND=noninteractive apt update - DEBIAN_FRONTEND=noninteractive apt install -y build-essential zlib1g-dev libssl-dev libpam0g-dev wget ntpdate -o Dpkg::Options::="--force-confnew" - ;; - centos|rhel|fedora) - yum install -y epel-release - yum groupinstall -y "Development Tools" - yum install -y zlib-devel openssl-devel pam-devel wget ntpdate - ;; - alpine) - apk add build-base zlib-dev openssl-dev pam-dev wget ntpdate - ;; - *) - echo "不支持的操作系统:$OS" - exit 1 - ;; - esac -} - - -# 下载、编译和安装OpenSSH -install_openssh() { - wget --no-check-certificate https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${OPENSSH_VERSION}.tar.gz - tar -xzf openssh-${OPENSSH_VERSION}.tar.gz - cd openssh-${OPENSSH_VERSION} - ./configure - make - make install -} - -# 重启SSH服务 -restart_ssh() { - case $OS in - ubuntu|debian) - systemctl restart ssh - ;; - centos|rhel|fedora) - systemctl restart sshd - ;; - alpine) - rc-service sshd restart - ;; - *) - echo "不支持的操作系统:$OS" - exit 1 - ;; - esac -} - -# 设置路径优先级 -set_path_priority() { - NEW_SSH_PATH=$(which sshd) # 假设新版本的sshd和ssh在同一个目录 - NEW_SSH_DIR=$(dirname "$NEW_SSH_PATH") - - if [[ ":$PATH:" != *":$NEW_SSH_DIR:"* ]]; then - export PATH="$NEW_SSH_DIR:$PATH" - echo "export PATH=\"$NEW_SSH_DIR:\$PATH\"" >> ~/.bashrc - fi -} - -# 验证更新 -verify_installation() { - echo "SSH版本信息:" - ssh -V - sshd -V -} - -# 清理下载的文件 -clean_up() { - cd .. - rm -rf openssh-${OPENSSH_VERSION}* -} - - -# 标题 -check_openssh_test() { -echo "SSH高危漏洞修复工具" -echo "--------------------------" -} - -# 检查OpenSSH版本 -check_openssh_version() { - current_version=$(ssh -V 2>&1 | awk '{print $1}' | cut -d_ -f2 | cut -d'p' -f1) - - # 版本范围 - min_version=8.5 - max_version=9.7 - - if awk -v ver="$current_version" -v min="$min_version" -v max="$max_version" 'BEGIN{if(ver>=min && ver<=max) exit 0; else exit 1}'; then - check_openssh_test - echo "SSH版本: $current_version 在8.5到9.7之间,需要修复。" - read -p "确定继续吗?(Y/N): " choice - case "$choice" in - [Yy]) - install_dependencies - install_openssh - restart_ssh - set_path_priority - verify_installation - clean_up - - ;; - [Nn]) - echo "已取消" - exit 1 - ;; - *) - echo "无效的选择,请输入 Y 或 N。" - exit 1 - ;; - esac - else - check_openssh_test - echo "SSH版本: $current_version 不在8.5到9.7之间,无需修复。" - exit 1 - fi - -} - - -check_openssh_version