onsdag 11 december 2013

Automatisk inloggning SJ, uppdaterad


SJ har nyligen ändrat så det inte längre kostar pengar att surfa. Dels har dom skaffat nya modem (4G), vilket borde öka kapaciteten. Men när nu alla får surfa hejdlöst, blir det väl slött ändå :(


Hur som helst, scriptet i förra posten, fungerar inte längre. Men om man fortfarande vill ha ett script som automatiskt aktiverar internet, kan man förändra sj.sh enligt nedan:




#!/bin/sh

IF=$1
STATUS=$2
USER=marcus
SJSCRIPT=/home/marcus/sj.sh

wait_for_process() {
  PNAME=$1
  PID=`/usr/bin/pgrep $PNAME`
  while [ -z "$PID" ]; do
 sleep 3;
 PID=`/usr/bin/pgrep $PNAME`
  done
}

sj_login() {
 wait_for_process nm-applet
 echo "Logging in to SJ"
 $SJSCRIPT 2>&1
}

if [ "$IF" = "wlan0" ] && [ "$STATUS" = "up" ]; then

 ESSID="`iwconfig $IF 2>&1 | grep ESSID | sed -e's/.*ESSID:"\(.*\)"/\1/' -e's/ //g'`"
 case "$ESSID" in
  'SJ')
   # Login to SJ...
   sj_login
  ;;
 esac

fi

lördag 14 april 2012

Automatisk inloggning på SJ

Har sedan ett tag tillbaka börjat pendla med SJ. Med svart SJ Prio kort ingår Internet, men man måste gå igenom deras relativt omständiga inloggnings-process varje gång.

Följande kod fungerar rakt av på Ubuntu, men kan säkerligen modifieras för att fungera på dom flesta nix-relaterade OS.

Börja med att skapa ett script enligt nedan, som lämpligen döps till sj.sh och lägg det i en lämplig katalog, tex /usr/bin/.

#!/bin/bash

#Set these variables!
PRIOCARD="97522102XXXXXXXX";
CARDPASS="XXXX";

#There is normally no need to modify anything below...

URL="https://www.ombord.info/hotspot/hotspot.cgi";
AGENT="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.142 Safari/535.19";
HOST="Host:www.ombord.info";
ORG="Origin:http://ombord.sj.se";
REF="Referer:http://ombord.sj.se";

POSTDATA="language=&username=$PRIOCARD&method=login&realm=sj_otp_prio_black&password=$CARDPASS";

curl -d $POSTDATA -A "$AGENT" -H "$HOST" -H "$ORG" -H "$REF" -c - $URL


Gör scriptet exekverbart (chmod +x /usr/bin/sj.sh).
Du kan nu testa att logga in om du sitter på ett tåg och är uppkopplad mot SJs trådlösa nät.
Kör /usr/bin/sj.sh och se om du blir inloggad.


Om det fungerade fint, kan vi nu automatisera det hela ännu mer.
Skapa ett script som lämpligen heter 66SJ i följande katalog /etc/NetworkManager/dispatcher.d.

#!/bin/sh

IF=$1
STATUS=$2
MYIF="wlan0"
SJSCRIPT=/usr/bin/sj.sh

wait_for_process() {
  PNAME=$1
  PID=`/usr/bin/pgrep $PNAME`
  while [ -z "$PID" ]; do
 sleep 3;
 PID=`/usr/bin/pgrep $PNAME`
  done
}

sj_login() {
 wait_for_process nm-applet
 echo "Logging in to SJ"
 $SJSCRIPT 2>&1
}

if [ "$IF" = "$MYIF" ] && [ "$STATUS" = "up" ]; then

 ESSID="`iwconfig $IF 2>&1 | grep ESSID | sed -e's/.*ESSID:"\(.*\)"/\1/' -e's/ //g'`"
 case "$ESSID" in
  'SJ')
   # Login to SJ...
   sj_login
  ;;
 esac

fi


Spara filen och ändra MYIF om ditt interface för wlan inte heter wlan0.
Nu ska du bli automatiskt inloggad så fort du sätter på datorn på ett av SJs tåg med Internet.

Sen kan man reflektera över hur mycket det är värt. Själv har jag nästan ständigt mer tillförlitlig mottagning med Telenor, men det kan ju variera med olika sträckor.