Files
zhaopin/scripts/check-connectivity.sh
T

125 lines
4.0 KiB
Bash
Executable File

#!/bin/bash
# 简历筛选系统连通性检查
# 用法: bash check-connectivity.sh
# 检查:SSH连接(Tailscale)、WiFi信号、两条CDP隧道、Watchdog、batch-runner
set -euo pipefail
SSH_HOST="100.64.0.7"
SSH_PORT="22"
SSH_USER="sshadmin"
SSH_CMD="ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no -p $SSH_PORT $SSH_USER@$SSH_HOST"
PASS=0
FAIL=0
WARN=0
ok() { echo " ✅ $1"; ((PASS++)); }
fail() { echo " ❌ $1"; ((FAIL++)); }
warn() { echo " ⚠️ $1"; ((WARN++)); }
echo "═══ 简历筛选系统连通性检查 ═══"
echo ""
# 1. SSH 连接
echo "【1】SSH → Windows ($SSH_HOST:$SSH_PORT)"
if $SSH_CMD "echo OK" >/dev/null 2>&1; then
ok "SSH 连接正常"
else
fail "SSH 连接失败(Tailscale不通或远端关机)"
echo " → 后续检查跳过"
exit 1
fi
# 2. WiFi 信号
echo ""
echo "【2】WiFi 信号"
WIFI_INFO=$($SSH_CMD "netsh wlan show interfaces" 2>/dev/null | grep -E "SSID|Signal|State" || true)
if echo "$WIFI_INFO" | grep -qi "connected"; then
SIGNAL=$(echo "$WIFI_INFO" | grep -i "signal" | sed 's/.*:\s*//' | tr -d ' %')
SSID=$(echo "$WIFI_INFO" | grep -i "SSID" | tail -1 | sed 's/.*:\s*//')
echo " SSID: $SSID | 信号: ${SIGNAL:-?}%"
if [ "${SIGNAL:-0}" -lt 30 ]; then
warn "WiFi 信号极弱(${SIGNAL}%),可能频繁断连"
else
ok "WiFi 已连接"
fi
else
fail "WiFi 未连接"
fi
# 3. CDP 隧道
echo ""
echo "【3】CDP 隧道"
# hr1 Chrome (9223)
echo " hr1 Chrome — 隧道端口 9223"
if curl -s --connect-timeout 5 http://127.0.0.1:9223/json/version >/dev/null 2>&1; then
BROWSER=$(curl -s --connect-timeout 5 http://127.0.0.1:9223/json/version | python3 -c "import sys,json;print(json.load(sys.stdin).get('Browser','?'))" 2>/dev/null || echo "?")
TABS=$(curl -s http://127.0.0.1:9223/json/list 2>/dev/null | python3 -c "
import sys,json
tabs=json.load(sys.stdin)
pages=[t for t in tabs if t.get('type')=='page']
for t in pages: print(f' {t[\"title\"]} → {t[\"url\"][:80]}')
print(f' 共 {len(pages)} 个页面')
" 2>/dev/null || echo " (无法读取)")
ok "CDP 正常 ($BROWSER)"
echo "$TABS"
else
fail "CDP 不通(隧道断开或Chrome未运行)"
fi
# hr2 Edge (9224)
echo " hr2 Edge — 隧道端口 9224"
if curl -s --connect-timeout 5 http://127.0.0.1:9224/json/version >/dev/null 2>&1; then
BROWSER=$(curl -s --connect-timeout 5 http://127.0.0.1:9224/json/version | python3 -c "import sys,json;print(json.load(sys.stdin).get('Browser','?'))" 2>/dev/null || echo "?")
TABS=$(curl -s http://127.0.0.1:9224/json/list 2>/dev/null | python3 -c "
import sys,json
tabs=json.load(sys.stdin)
pages=[t for t in tabs if t.get('type')=='page']
for t in pages: print(f' {t[\"title\"]} → {t[\"url\"][:80]}')
print(f' 共 {len(pages)} 个页面')
" 2>/dev/null || echo " (无法读取)")
ok "CDP 正常 ($BROWSER)"
echo "$TABS"
else
fail "CDP 不通(隧道断开或Edge未运行)"
fi
# 4. Watchdog 状态
echo ""
echo "【4】隧道守护 Watchdog"
if ps aux | grep ssh-tunnel-watchdog | grep -v grep >/dev/null 2>&1; then
WPID=$(ps aux | grep ssh-tunnel-watchdog | grep -v grep | awk '{print $2}')
ok "运行中 (PID $WPID)"
if [ -f /tmp/ssh-tunnel-watchdog.pid ]; then
echo " PID文件: $(cat /tmp/ssh-tunnel-watchdog.pid)"
else
warn "无 PID 锁文件(可能是旧版 v1,需重启才能用 v2)"
fi
else
warn "未运行"
fi
# 5. batch-runner 实例
echo ""
echo "【5】batch-runner 实例"
RUNNING=$(ps aux | grep "batch-runner" | grep -v grep || true)
if [ -n "$RUNNING" ]; then
echo "$RUNNING" | while read -r line; do
ok "运行中: $(echo "$line" | grep -oP 'ACCOUNT=\S+' || echo '账号未标注')"
done
else
echo " (无 batch-runner 运行)"
fi
# 汇总
echo ""
echo "═══ 检查完成 ═══"
echo "✅ 通过: $PASS ❌ 失败: $FAIL ⚠️ 警告: $WARN"
if [ "$FAIL" -gt 0 ]; then
echo "有失败项,修复后再启动筛选。"
else
echo "连通性正常,可以启动筛选。"
fi