2f119478af
Funciones bash para instalar, conectar, desconectar, estado, IP, ciudades, países y protocolo. Funciones Go para gestionar contenedor NordVPN (run/start/stop) y parsear estado. Incluye tipo NordVPNStatus y tests para el parser. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
40 lines
1.3 KiB
Bash
40 lines
1.3 KiB
Bash
# nordvpn_connect
|
|
# ---------------
|
|
# Conecta a NordVPN. Acepta pais, ciudad o servidor especifico.
|
|
# Sin argumentos conecta al mejor servidor disponible.
|
|
# Imprime JSON con el resultado de la conexion.
|
|
#
|
|
# USO (sourced):
|
|
# source nordvpn_connect.sh
|
|
# nordvpn_connect # mejor servidor
|
|
# nordvpn_connect Spain # por pais
|
|
# nordvpn_connect Spain Madrid # por ciudad
|
|
# nordvpn_connect Spain '#42' # servidor especifico
|
|
|
|
nordvpn_connect() {
|
|
local country="${1:-}"
|
|
local city="${2:-}"
|
|
|
|
if ! command -v nordvpn &>/dev/null; then
|
|
echo '{"ok":false,"error":"nordvpn no instalado"}' >&2
|
|
return 1
|
|
fi
|
|
|
|
local args=()
|
|
[ -n "$country" ] && args+=("$country")
|
|
[ -n "$city" ] && args+=("$city")
|
|
|
|
local output
|
|
output=$(nordvpn connect "${args[@]}" 2>&1)
|
|
local rc=$?
|
|
|
|
if [ $rc -eq 0 ] && echo "$output" | grep -qi "connected"; then
|
|
local server
|
|
server=$(echo "$output" | grep -oP '(?<=to )\S+' | head -1)
|
|
echo "{\"ok\":true,\"server\":\"${server}\",\"country\":\"${country:-auto}\",\"city\":\"${city:-auto}\"}"
|
|
else
|
|
echo "{\"ok\":false,\"error\":$(echo "$output" | python3 -c 'import sys,json; print(json.dumps(sys.stdin.read().strip()))' 2>/dev/null || echo "\"$output\"")}"
|
|
return 1
|
|
fi
|
|
}
|