Skip to content

Instantly share code, notes, and snippets.

@NemoAlex
Last active December 25, 2024 10:45
Show Gist options
  • Save NemoAlex/c3eed2d4266fbdf8f291effc1236ae05 to your computer and use it in GitHub Desktop.
Save NemoAlex/c3eed2d4266fbdf8f291effc1236ae05 to your computer and use it in GitHub Desktop.
vx.link 证书更新脚本。把证书下载到本地,再上传到服务器上,支持多个服务器。
#!/bin/bash
# 定义要下载的文件的URL
FILE1_URL="http://lab.vx.link/ssl/xxxxxxxxxxxxx.key"
FILE2_URL="http://lab.vx.link/ssl/xxxxxxxxxxxxx.crt"
# 创建临时目录并定义本地保存路径
TEMP_DIR=$(mktemp -d)
trap 'rm -rf "$TEMP_DIR"' EXIT # 脚本结束时自动清理临时目录
# 定义服务器信息,格式为 "用户名@服务器名:路径:reload命令"
SERVERS=(
"root@server_1:/etc/nginx/ssl/xxx.com.key:nginx -s reload"
"root@server_2:/etc/nginx/ssl/xxx.com.key:nginx -s reload"
)
# 下载文件
curl -o "$TEMP_DIR/server.key" "$FILE1_URL"
curl -o "$TEMP_DIR/server.crt" "$FILE2_URL"
# 遍历服务器
for SERVER in "${SERVERS[@]}"; do
# 使用 IFS 分割字符串
IFS=':' read -r SERVER_INFO TARGET_PATH RELOAD_CMD <<< "$SERVER"
echo "正在处理服务器: $SERVER_INFO"
# 上传并重命名
scp "$TEMP_DIR/server.key" "$SERVER_INFO:$TARGET_PATH"
scp "$TEMP_DIR/server.crt" "$SERVER_INFO:${TARGET_PATH%.key}.crt"
# Reload 命令
ssh $SERVER_INFO "$RELOAD_CMD"
done
echo "证书已成功更新"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment