#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # shellcheck source=lib.sh source "$ROOT_DIR/scripts/lib.sh" if [[ -f "${CONFIG_FILE:-$ROOT_DIR/config/settings.conf}" ]]; then load_config else CELLULAR_IFACE_PATTERNS="${CELLULAR_IFACE_PATTERNS:-wwan,wwp,usb,enx,ppp,cdc,rmnet,ccmni,mbim,qmi}" REQUIRE_CELLULAR_IFACE=false CELLULAR_IFACE= fi echo "========== 主机 ==========" echo "hostname : $(hostname)" echo "kernel : $(uname -r)" echo "arch : $(uname -m)" echo "mem_total: $(awk '/MemTotal/ {printf "%.0f MB", $2/1024}' /proc/meminfo 2>/dev/null || echo unknown)" echo "mem_avail: $(awk '/MemAvailable/ {printf "%.0f MB", $2/1024}' /proc/meminfo 2>/dev/null || echo unknown)" echo echo "========== 接口列表 ==========" printf '%-12s %-10s %-18s %-12s %s\n' "IFACE" "STATE" "IPv4" "DRIVER" "SCORE" default_if="$(detect_default_iface || true)" while IFS='|' read -r name state ip; do [[ -z "$name" ]] && continue is_virtual_or_skip_iface "$name" && continue sc="$(score_iface_as_cellular "$name" "$default_if")" drv="$(iface_driver "$name" || true)" printf '%-12s %-10s %-18s %-12s %s\n' "$name" "$state" "${ip:-}" "${drv:-}" "$sc" done < <(list_ifaces) echo echo "========== 默认路由 ==========" ip route show default 2>/dev/null || true echo echo "default iface: ${default_if:-none}" echo echo "========== 数据网卡(代理出口) ==========" cell="$(detect_cellular_iface "${CELLULAR_IFACE:-}" 2>/dev/null || true)" if [[ -n "$cell" ]]; then echo "CELLULAR_IFACE=$cell ip=$(detect_source_ip "$cell" || true) driver=$(iface_driver "$cell" || true)" echo "说明: 走本代理的流量将从该网卡出(数据流量)" else echo "未能自动探测数据网卡。" echo "请手动: CELLULAR_IFACE=网卡名 或 cpxy rebind" exit 2 fi