Von der Shell an einem WLAN Captive Portal von Aruba Networks einloggen

Von der Shell aus an einem Aruba Networks Access Point (captive portal) anmelden um eine Verbindung ins Internet herzustellen

Ab und an komme ich in die Verlegenheit, mich an einem WLAN-AP “Captive-Portal” anmelden zu müssen, bevor ich das Internet nutzen kann. Häufig sind diese Geräte von Aruba Networks . Bislang fehlte mir eine einfache Methode, um mich dort von der Shell aus anmelden zu können und so habe ich mir das Ganze etwas näher angesehen.

Selbstverständlich muss ich das nachfolgende Bash Script für jedes Portal maßschneidern, aber generell sollte mir damit die Anmeldung gelingen:

 1#!/usr/bin/env bash
 2
 3captive_portal="captive-portal.domain.tld"
 4user_agent="Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0;  rv:11.0) like Gecko"
 5
 6i=1
 7while true; do
 8  curl -k "https://${captive_portal}/swarm.cgi" --compressed \
 9    -H "Host: ${captive_portal}" \
10    -H "User-Agent: ${user_agent}" \
11    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
12    -H 'Accept-Language: de,en;q=0.5' \
13    -H 'Content-Type: application/x-www-form-urlencoded' \
14    -H "Referer: https://${captive_portal}/swarm.cgi?opcode=cp_generate&orig_url=687474703a2f2f68656973652e64652f" \
15    -H 'DNT: 1' \
16    -H 'Connection: keep-alive' \
17    -H 'Upgrade-Insecure-Requests: 1' --data 'orig_url=687474703a2f2f68656973652e64652f&opcode=cp_auth&user=guest&password=guest' >/dev/null 2>&1
18  if [[ $(ping -c1 google.de 2>/dev/null) ]]; then
19    echo "Yay! Got an internet connection, after interation: ${i}"
20    break
21  fi
22  ((i++))
23done

Theoretisch muss ich so nur noch mein WLAN-Interface manuell konfigurieren und das Script ausführen. Aber es geht noch einfacher: Unter Arch Linux nutze ich netctl für die Netzwerkkonfiguration und so kann ich - wie gewohnt - ein neues, statisches Profil und einen netctl Hook für das WLAN-Netzwerk in /etc/netctl anlegen.

Dateien mit Hilfe von zssh übertragen

zssh - ein Wrapper für SSH mit Unterstützung für ZMODEM

ZMODEM war ursprünglich ein proprietäres Dateitransfer-Protokoll der Firma Omen Technologies Inc. . Das 1986 von Chuck Forsberg entwickelte Protokoll ist nun weitestgehend freie Software. Die Linux Implementierung lrzsz basiert auf dem letzten, unter public domain veröffentlichten Release, von rzsz. Neben ZMODEM gibt es weitere Varianten des Protokolls, wie XMODEM, YMODEM, SEXYZ und SyncTERM.

Das lrzsz Paket besteht aus den Programmen: rb, rx, rz, sb, sx und sz. Manche werden zum Senden von Daten via X/Y/ZMODEM benötigt, andere zum Empfangen. Für uns sind an dieser Stelle nur sz und rz interessant.

Generell sind das Protokoll und die CLI-Tools heute weitestgehend obsolet geworden, da viele Dateitransferprotokolle das Fortsetzen von fehlerhaften Übertragungen unterstützen und dabei auch noch erheblich schneller sind. Aber für eine Sache möchte ich den ZMODEM-Dateitransfer nicht missen, denn die Verwendung spart mir einiges an Arbeit: