84 lines
2.5 KiB
Bash
Executable File
84 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ENV_FILE="${1:-/etc/default/domaincheck-api}"
|
|
WORKER_SERVICE="${WORKER_SERVICE:-domaincheck-worker}"
|
|
API_SERVICE="${API_SERVICE:-domaincheck-api}"
|
|
SYNC_AGENT_SERVICE="${SYNC_AGENT_SERVICE:-domaincheck-sync-agent}"
|
|
PYTHON_BIN="${PYTHON_BIN:-python3}"
|
|
|
|
echo "[1/5] environment file"
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo "missing env file: $ENV_FILE"
|
|
exit 1
|
|
fi
|
|
echo "env file: $ENV_FILE"
|
|
echo
|
|
|
|
echo "[2/5] key env summary"
|
|
"${PYTHON_BIN}" - <<'PY' "$ENV_FILE"
|
|
import json
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
env_path = Path(sys.argv[1])
|
|
values = {}
|
|
for line in env_path.read_text(encoding="utf-8").splitlines():
|
|
text = line.strip()
|
|
if not text or text.startswith("#") or "=" not in text:
|
|
continue
|
|
key, value = text.split("=", 1)
|
|
values[key.strip()] = value.strip()
|
|
|
|
required = {
|
|
"NODE_CODE": values.get("NODE_CODE", ""),
|
|
"NODE_REGION": values.get("NODE_REGION", ""),
|
|
"NODE_ROLE": values.get("NODE_ROLE", ""),
|
|
"SYNC_PUSH_ENABLED": values.get("SYNC_PUSH_ENABLED", ""),
|
|
"SYNC_SOURCE_REGION": values.get("SYNC_SOURCE_REGION", ""),
|
|
"SYNC_TARGET_REGION": values.get("SYNC_TARGET_REGION", ""),
|
|
"SYNC_TARGET_API_BASE_URL": values.get("SYNC_TARGET_API_BASE_URL", ""),
|
|
}
|
|
print(json.dumps(required, ensure_ascii=False, indent=2))
|
|
|
|
errors = []
|
|
if required["NODE_REGION"] != "mainland":
|
|
errors.append("NODE_REGION 必须为 mainland")
|
|
if required["NODE_ROLE"] != "control":
|
|
errors.append("NODE_ROLE 必须为 control")
|
|
if str(required["SYNC_PUSH_ENABLED"]).lower() != "true":
|
|
errors.append("SYNC_PUSH_ENABLED 必须为 true")
|
|
if required["SYNC_SOURCE_REGION"] != "mainland":
|
|
errors.append("SYNC_SOURCE_REGION 必须为 mainland")
|
|
if not required["SYNC_TARGET_API_BASE_URL"]:
|
|
errors.append("必须配置 SYNC_TARGET_API_BASE_URL")
|
|
|
|
if errors:
|
|
print()
|
|
print("env validation failed:")
|
|
for item in errors:
|
|
print(f"- {item}")
|
|
sys.exit(1)
|
|
PY
|
|
echo
|
|
|
|
echo "[3/6] systemd status"
|
|
systemctl is-enabled "$API_SERVICE" || true
|
|
systemctl is-active "$API_SERVICE"
|
|
systemctl is-enabled "$WORKER_SERVICE" || true
|
|
systemctl is-active "$WORKER_SERVICE"
|
|
systemctl is-enabled "$SYNC_AGENT_SERVICE" || true
|
|
systemctl is-active "$SYNC_AGENT_SERVICE"
|
|
echo
|
|
|
|
echo "[4/6] api service detail"
|
|
systemctl status "$API_SERVICE" --no-pager -l | sed -n '1,25p'
|
|
echo
|
|
|
|
echo "[5/6] worker service detail"
|
|
systemctl status "$WORKER_SERVICE" --no-pager -l | sed -n '1,25p'
|
|
echo
|
|
|
|
echo "[6/6] sync-agent detail"
|
|
systemctl status "$SYNC_AGENT_SERVICE" --no-pager -l | sed -n '1,25p'
|