流程图:VPS 接入安装、远端 auto_dial、自愈巡检

这张图把 new_remote_install_vps3.pyinstall_files/auto_dial.pytestPPPoe2.py 串起来,说明节点从接入到持续维护如何闭环。

flowchart TD
  A[新 VPS 节点:供应商给出 ip:port/root 密码/ADSL 账号] --> B[安装脚本 VPS(addr) 通过 Paramiko 建 SSH]
  B --> C[SFTP 上传 install_files 到 /root]
  C --> D[安装代理服务]
  D --> D1[tinyproxy:解压源码 -> configure/make/install -> 覆盖 tinyproxy.conf -> 启动]
  D --> D2[danted:清理旧包 -> yum localinstall/rpm -> 创建日志目录 -> 覆盖 sockd.conf -> systemctl start]
  D1 --> E[创建代理认证用户/密码,保证外部访问代理需要认证]
  D2 --> E
  E --> F[可选安装 auto_dial.service:ExecStart=/usr/bin/python3 -u /root/auto_dial.py,Restart=always]
  F --> G[远端 auto_dial.py 常驻循环]
  G --> H{当前 ppp0 proxy_ip 是否存在且控制端未要求停止?}
  H -- 是 --> H1[继续 sleep,避免无意义重拨]
  H1 --> G
  H -- 否/需要停止 --> I[restart:pppoe-stop;失败则 kill /usr/sbin/pppd;再 pppoe-start 获取新 IP]
  I --> J{新 IP 是否存在且不同于旧 IP?}
  J -- 否 --> I
  J -- 是 --> K[restart_tinyproxy:杀旧 tinyproxy 进程并重新启动,确保代理服务使用新链路]
  K --> L[post_proxy 调用控制端 upload,上报新代理]
  L --> M{上报成功?}
  M -- 是 --> N[等待 120 秒后回到循环,避免频繁拨号]
  M -- 否 --> I
  N --> G
  O[testPPPoe2.py 线程池巡检多台服务器] --> P[SSH 连接每台 VPS]
  P --> Q[check_danted_status:systemctl status danted]
  Q --> R{Danted inactive/failed?}
  R -- 是 --> R1[systemctl restart danted,最多重试]
  R -- 否 --> S[check_pppoe_status 检查 pppoe/ppp0 状态]
  R1 --> S
  S --> T{PPPoE 正常且 Danted 正常?}
  T -- 是 --> U[ping 百度,记录丢包率/连通性]
  T -- 否 --> V[跳过 ping 并写日志,等待下一轮或人工介入]
  U --> W[每轮 sleep 后继续巡检]
  V --> W

说明

返回索引