#!/bin/bash # ================================================================= # Hysteria 带宽配置自动脚本 (全自动版) # 功能: # 1. 检查 'bandwidth:' 配置是否存在,不存在则自动添加 # 2. 自动重启 hysteria-server 服务 # 3. 检查服务状态 # ================================================================= # --- 配置变量 --- CONFIG_FILE="/etc/hysteria/config.yaml" SERVICE_NAME="hysteria-server.service" # --- 脚本开始 --- # 步骤 0: 检查权限和文件 echo "===== 0. 检查环境 =====" # 检查是否以 root 用户运行 if [ "$(id -u)" -ne 0 ]; then echo -e "\033[0;31m错误:此脚本必须以 root 用户身份运行。\033[0m" >&2 echo "请使用 'sudo ./auto_config_hysteria.sh' 来执行。" >&2 exit 1 fi # 检查配置文件是否存在 if [ ! -f "$CONFIG_FILE" ]; then echo -e "\033[0;31m错误:配置文件 '$CONFIG_FILE' 不存在。\033[0m" >&2 echo "请确认 Hysteria 服务已正确安装。" >&2 exit 1 fi echo "环境检查通过。" echo "" # 步骤 1: 检查并修改配置文件 echo "===== 1. 正在修改配置文件... =====" # 使用 grep -q 检查 'bandwidth:' 是否已在文件中 (以行首匹配,避免匹配到注释) if grep -q "^bandwidth:" "$CONFIG_FILE"; then echo -e "\033[0;33m检测到 'bandwidth' 配置已存在,跳过修改。\033[0m" else echo "未找到 'bandwidth' 配置,正在向文件末尾添加..." # 使用 'cat <> "$CONFIG_FILE" bandwidth: up: 5 mbps down: 5 mbps EOF echo -e "\033[0;32m配置已成功添加!\033[0m" fi echo "" # 步骤 2: 重启服务 echo "===== 2. 正在重启 Hysteria 服务... =====" systemctl restart "$SERVICE_NAME" # 检查重启命令的退出状态 if [ $? -ne 0 ]; then echo "" echo -e "\033[0;31m严重错误:Hysteria 服务重启失败!\033[0m" >&2 echo "这极有可能是因为配置文件存在语法错误。" >&2 echo "请手动执行以下命令查看详细日志以排查问题:" >&2 echo " journalctl -u $SERVICE_NAME -n 100 --no-pager" >&2 exit 1 fi echo "服务重启命令已成功发送。" echo "" # 步骤 3: 检查服务状态 echo "===== 3. 正在检查服务最终状态... =====" # 等待2秒,让服务有足够时间启动或失败 sleep 2 # 使用 systemctl is-active 检查服务是否正在运行 if systemctl is-active --quiet "$SERVICE_NAME"; then echo -e "\033[0;32m服务状态正常,正在运行 (active)。\033[0m" # 显示简要状态 systemctl status "$SERVICE_NAME" | head -n 3 else echo -e "\033[0;31m警告:服务未能成功启动,当前状态为 inactive 或 failed。\033[0m" >&2 echo "请检查上面的日志或使用 'systemctl status $SERVICE_NAME' 查看详情。" >&2 fi echo "" echo "脚本执行完毕。"