all repos — zion-terminal @ main

dotfiles

opt/zion-terminal/bin/zion-link (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
#!/usr/bin/env bash
# ZION TERMINAL - Link (conectividade resumida)
# Cyberdeck criado por Pablo Murad em 2026
# Reutiliza os getters da lib (sem duplicar zion-rede/tailscale/radar).
export LC_ALL=C
. /opt/zion-terminal/bin/zion-lib.sh 2>/dev/null
[ "$1" = "--help" ] && { echo "Uso: zion link — visao unica de conectividade (interface, IPs, gateway, DNS, internet, Tailscale, peers, direto/DERP)."; exit 0; }

ui_header "LINK — CONECTIVIDADE"

dev=$(ip route show default | awk '{print $5; exit}')
tipo="Ethernet"; [ "${dev#wl}" != "$dev" ] && tipo="Wi-Fi"
ui_kv "Interface" "${dev:-—} ($tipo)"
if [ "$tipo" = "Wi-Fi" ] && command -v iw >/dev/null; then
  ssid=$(iw dev "$dev" link 2>/dev/null | awk -F': ' '/SSID/{print $2}'); [ -n "$ssid" ] && ui_kv "SSID" "$ssid"
fi
ui_kv "IP local" "$(zion_ip_local)"
gw=$(ip route show default | awk '{print $3; exit}')
printf '  %b%-14s%b %b  %b%s%b\n' "$ZDISC" "Gateway" "$ZR" "$([ -n "$gw" ] && ping -c1 -W1 "$gw" >/dev/null 2>&1 && ui_state ok || ui_state warn)" "$ZGRY" "${gw:-—}" "$ZR"
ui_kv "DNS" "$(grep -h ^nameserver /etc/resolv.conf 2>/dev/null | awk '{print $2}' | tr '\n' ' ')"
printf '  %b%-14s%b %b\n' "$ZDISC" "Internet" "$ZR" "$([ "$(zion_internet)" = disponivel ] && ui_state ok || ui_state off)"

ui_section "TAILSCALE"
printf '  %b%-14s%b %b  %b%s%b\n' "$ZDISC" "Estado" "$ZR" "$([ "$(zion_ts_estado)" = conectado ] && ui_state ok || ui_state off)" "$ZGRY" "$(zion_ip_ts)" "$ZR"
if command -v tailscale >/dev/null; then
  on=$(tailscale status 2>/dev/null | awk '/^100\./ && !/offline/{c++} END{print c+0}')
  tot=$(tailscale status 2>/dev/null | awk '/^100\./{c++} END{print c+0}')
  ui_kv "Peers online" "$on de $tot"
  magic=$(tailscale status --json 2>/dev/null | grep -o '"MagicDNSSuffix":"[^"]*"' | head -1 | cut -d'"' -f4)
  [ -n "$magic" ] && ui_kv "MagicDNS" "$magic"
  # testa 1 peer online
  peer=$(tailscale status 2>/dev/null | awk -v self="$(hostname)" '/^100\./ && !/offline/ && $2!=self{print $2; exit}')
  if [ -n "$peer" ]; then
    res=$(timeout 5 tailscale ping -c1 --timeout 3s "$peer" 2>/dev/null | head -1)
    via=DERP; echo "$res" | grep -q direct && via=direto
    ms=$(echo "$res" | grep -o 'in [0-9]*ms' | grep -o '[0-9]*')
    printf '  %b%-14s%b %b  %b%s via %s%b\n' "$ZDISC" "Teste ($peer)" "$ZR" "$([ "$via" = direto ] && ui_state ok || ui_state warn)" "$ZGRY" "${ms:-?}ms" "$via" "$ZR"
  fi
fi
ui_rule