This blog post has been published on 2010-10-15 and may be out of date.
Bei einigen W-LANs muss man sich vorher per Browser auf einer Authentifizierungsseite einloggen, um dies zu umgehen habe ich einfach den Login-Vorgang mit lynx aufgezeichnet und dies in ein Skript verpackt.
# mit lynx die Tastatur Eingaben aufzeichnen
lynx -cmd_log wlan.log http://www.google.de/
# und diese als "Makro" wieder ausführen
lynx -cmd_script=wlan.log http://www.google.de/
#!/bin/bash
TERM="xterm"; export TERM
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:$PATH"
sleep 30
# W-Lan Gateyway IP herausfinden ->
# Gateway-IPs | jedoch nicht eth | bei der Ausgabe muss vone 0.0.0.0 stehen | gewuenschte Ausgabe steht in an Stelle 10
# wenn man als Trennung der Zeichen ein Leerzeichen annimmt
GW=$(route -n | grep -v eth | grep -i "^0.0.0.0" | cut -f 10 -d " ")
# Variablen werden gesezt
PACKETS=3
STARTWERT=0
ENDWERT=5
# wenn die Variable "GW" nicht leer ist dann...
# (-z kann pruefen ob eine Variable leer ist)
if [ -n $GW ]; then
# ...solange der STARTWERT kleiner dem ENDWERT ist, wird folgendes ausgefuert
while [ $STARTWERT -lt $ENDWERT ]; do
# schauen ob wir eine ANTWORT vom Gateway bekommen ->
# ping-test | Anzahl der zu sendenden / empfangenden Pakete | Ausgabe-Zeile auf "packets" eingrenzen | gewuenschte Ausgabe steht in an Stelle 4
# wenn man als Trennung der Zeichen ein Leerzeichen annimmt
REQUEST=$(ping -qc $PACKETS $GW | grep packets | cut -f 4 -d " ")
# wenn die gesendeten Packete nicht der Anzahl der empfangenden entspricht...
if [ $REQUEST != $PACKETS ]; then
# ...dann Variable = 1 -> Fehler
EXITCODE=1
else
# ...ansonsten Variable = 0 -> OK
EXITCODE=0
fi
# STARTWERT um 1 erhoehen, so dass die while-Schleife irgendwann beendet werden kann
STARTWERT=$(expr $STARTWERT + 1)
done
fi
# wenn alles OK war...
if [ $exitcode=0 ]; then
# ...wird lynx (Browser) mit User + Password automatisch gestartet
gnome-terminal -e lynx -cmd_script=/home/lars/wlan.log http://www.google.de/
# und dem System wird mitgeteilt, dass alles OK ist
exit 0
else
# bzw. dass ein Fehler aufgetreten ist
exit 1
fi
Wenn man dieses Skript nun unter “/etc/network/if-up.d/” anlegt, und in der Datei “/etc/network/interfaces” unter dem Abschnitt z.B. “wlan0” folgende Zeile einfügt:
post-up /etc/network/if-up.d/wlan_login.sh
…wird dieses ausgeführt, sobald das W-Lan verbunden ist. Wenn jemand noch eine bessere Möglichkeit kennt, würde ich diese gerne hören… :-)