#!/bin/bash # 输出颜色 GREEN='\033[0;32m' RED='\033[0;31m' NC='\033[0m' # No Color # 提示用户操作风险 confirm_action() { echo -e "\033[1;33m 注意: 此脚本将安装多个工具和服务, 可能会修改系统配置, 带来潜在的安全风险!!!\033[0m" read -p "是否继续执行? (y/n): " CONFIRM if [[ "$CONFIRM" != "y" ]]; then echo "操作已取消。" exit 0 fi } # 检查是否以 root 权限运行 if [ "$(id -u)" -ne 0 ]; then echo "请以 root 用户运行此脚本!!!" exit 1 fi # 检测操作系统和包管理器 detect_package_manager() { if command -v apt &> /dev/null; then PACKAGE_MANAGER="apt" elif command -v yum &> /dev/null; then PACKAGE_MANAGER="yum" else echo "无法检测到支持的包管理器 (apt 或 yum), 请手动安装必要的依赖。" exit 1 fi } # 安装必要工具 install_packages() { if [ "$PACKAGE_MANAGER" = "apt" ]; then curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/cloudflare-client.list apt update && apt install -y curl wget unzip openssl cloudflare-warp elif [ "$PACKAGE_MANAGER" = "yum" ]; then curl -fsSl https://pkg.cloudflareclient.com/cloudflare-warp-ascii.repo | tee /etc/yum.repos.d/cloudflare-warp.repo yum install -y epel-release yum install -y curl wget unzip openssl cloudflare-warp fi } # 变量定义 DOMAIN=${1:-"example.com"} # 如果未提供域名参数,则默认使用 example.com DAYS_VALID=365 # 证书有效期(天数) CERT_DIR="/usr/local/etc/xray" # 证书存储目录 # 创建存储目录 mkdir -p ${CERT_DIR} # 生成私钥 openssl genrsa -out ${CERT_DIR}/${DOMAIN}.key 2048 # 生成证书签名请求( CSR ) openssl req -new -key ${CERT_DIR}/${DOMAIN}.key -out ${CERT_DIR}/${DOMAIN}.csr -subj "/CN=${DOMAIN}" # 生成自签名证书 openssl x509 -req -days ${DAYS_VALID} -in ${CERT_DIR}/${DOMAIN}.csr -signkey ${CERT_DIR}/${DOMAIN}.key -out ${CERT_DIR}/${DOMAIN}.crt # 安装 Xray-core bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install UUID=$(xray uuid) cat >> /usr/local/etc/xray/config.json << EOF { "inbounds": [ { "tag": "direct", "port": 443, "protocol": "vless", "settings": { "clients": [ { "id": "${UUID}", "flow": "" } ], "decryption": "none", "fallbacks": [] }, "streamSettings": { "network": "tcp", "security": "tls", "tlsSettings": { "serverNames": [ "" ], "alpn": [ "h2", "http/1.1" ], "certificates": [ { "certificateFile": "${CERT_DIR}/${DOMAIN}.crt", "keyFile": "${CERT_DIR}/${DOMAIN}.key" } ] } }, "sniffing": { "enabled": true, "destOverride": [ "http", "tls", "quic" ], "routeOnly": true } } ], "outbounds": [ { "tag": "direct", "protocol": "freedom" }, { "tag": "warp", "protocol": "socks", "settings": { "servers": [ { "address": "127.0.0.1", "port": 2333 } ] } } ], "routing": { "rules": [ { "type": "field", "outboundTag": "warp", "domain": [ "domain:openai.com", "domain:chatgpt.com", "domain:ai.com", "domain:chat.com", "domain:cloudflare.com", "domain:youtube.com", "domain:netflix.com" ] } ] } } EOF systemctl enable xray # 配置 Cloudflare WARP warp-cli mode proxy warp-cli proxy port 2333 warp-cli registration new warp-cli connect systemctl enable warp-svc # 获取公网 IP 地址 get_public_ip() { # 使用主服务获取 IP IP=$(curl -s ifconfig.me) if [ -z "$IP" ]; then echo "主服务 ifconfig.me 不可用,尝试其他服务..." # 备选服务 1: ipinfo.io IP=$(curl -s ipinfo.io/ip) if [ -z "$IP" ]; then echo "备选服务 ipinfo.io 不可用,尝试其他服务..." # 备选服务 2: ip-api.com IP=$(curl -s http://ip-api.com/line?fields=query) if [ -z "$IP" ]; then echo "无法获取公网 IP 地址,请检查网络连接。" IP="未知" fi fi fi echo "$IP" } # 调用函数获取 IP 地址 IP=$(get_public_ip) # 输出结果 echo "可使用以下命令查看服务状态:" echo " systemctl status xray # 检查 Xray 服务状态" echo " warp-cli status # 检查 WARP 状态" echo -e "uuid: ${UUID}" echo -e "本机公网 IP 地址: ${IP}" echo "xray-core 配置文件路径: /usr/local/etc/xray/config.json"
1 mumbler 311 天前 这问题你应该问 GPT 啊,自己写,自己反思,自己修改 或者让 GPT 写,让 claude 检查,人很金贵,别费人 |
2 kneo 311 天前 ![]() 自己测一下。谁有空你看这玩意。 |
3 success95 311 天前 via iPhone 这个脚本实现了什么功能? |
![]() | 4 rqYzyAced2NbD8fw 310 天前 > 这个代码有没有问题? > 从表面看,你的脚本没有明显语法错误,但有几点需要注意的可能问题或改进: 1. 操作系统兼容性: 检测包管理器只检 哦,论坛不能贴 GPT 的回复耶。你不会自己用 GPT 检查一遍吗? |
![]() | 5 my3157 310 天前 via Android ![]() 个人习惯,超过 50 行/有大量判等/逻辑复杂 的脚本绝不用 shell |
7 zhangeric 310 天前 整个虚拟机,做好快照,随便测,出问题了恢复就行了. |
![]() | 8 iorilu 310 天前 via Android 起个 docker 容器运行下不就知道了,几秒钟的事 |
![]() | 9 HojiOShi 310 天前 ![]() 要点碧莲,付费服务就别白嫖了,看不懂不敢用就自己查文档。我当初自建魔法也是自己查资料查的。 |
10 hulooq 310 天前 你在找免费劳工呢。。。 |
![]() | 11 XDiLa 310 天前 自己执行测试一下就好了啊 这种破事还让别人帮你测? 你又不是大奶萌妹 |
![]() | 12 cherishwinner334 310 天前 为什么这种帖子也能发出来?人干事?还是拿我们训练模型呢 |
![]() | 13 vczyh 310 天前 你说你呢 |
![]() | 14 MEIerer 310 天前 ![]() 。。。。。第一次见你这种帖 |
![]() | 15 wangtian2020 310 天前 玩○玩的 |
16 dyncan 310 天前 都在搬砖呢, 哪有空看啊. |
![]() | 17 clino 310 天前 建议先问一下 AI:“新手在论坛上问软件技术问题有什么注意事项” |
![]() | 18 InDom 310 天前 粗略看了一下脚本,确实发现了两个问题,一个小问题,改不改影响应该不大,另一个问题可能会出现预期外的操作,不过还得看你到底要什么需求。 有预算的话,可以私聊我聊一聊这个问题,咨询费 100 元/小时,先付费后解答。 |
19 leinad59 310 天前 |
20 alamak76 310 天前 |
![]() | 21 Asakijz 310 天前 你这个脚本是想实现啥? |
22 henix 310 天前 用 shellcheck 静态检查一下 |
23 renmu 310 天前 via Android 搁这找喷呢 |
24 aegon466 310 天前 via iPhone 可以用自己熟悉的语言写逻辑然后脚本调用 |
![]() | 25 iv8d 310 天前 你再问一下 gpt 该 shell 是否有问题 |
26 m1nm13 310 天前 好好好.这回把 V 友当 GPT 来用了 |
27 gerefoxing 310 天前 太长不看 |