OzForces usage meter

OzForces is an ISP in Australia. Not too bad service, but they lack an usage meter. Update: they have closed shop, not surprisingly. They only provide an HTTPS web interface to see the monthly consumption.

So here's a little curl script to retrieve the upload and download status from the command line. You can use it to quickly see your usage, but also to use in MRTG for instance.

It takes no argument, only need the OzForces login and password to be changed (usr and pwd) at the top of the script. It then outputs two lines, upload and download.

$ ./ozforces.sh
7607.01
22012.57    


Here's the script. You can also download it here

Disclaimer: Your use of this script is at your sole risk. It is provided "as -is", without any warranty. I shall not be held responsible for the use you make of this script.

#!/bin/sh

#
# ozforces.sh v 0.1 
#
# Bash script to look up OzForces ADSL connection data
# OzForces is an Australian ISP, and the only interface is an HTTPS website
# The script returns two lines: upload and download, in MB
#
# by Colin Verot   colin@verot.net
#
# this script is free to use, just keep the copyright notice
#

usr=abc
pwd=xxx

cookies="/tmp/$(basename $0).$RANDOM.txt"
cookies2="/tmp/$(basename $0).$RANDOM.tmp"
params="-s -b $cookies -c $cookies"  # can add -v for debug, or remove -s for feedback
agent="Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.0.1) Gecko/20060305 Firefox/1.5.0.1"

# we log in, and get the key
key=`curl $params -A "$agent" -d "EvwIspDn=o%3DOzForces%2Cou%3DClients%2Co%3DDOTV&username=$usr&password=$pwd" https://isp.ozforces.com/frameset.vps | grep -o 'CgiTree\?.*" name' | sed -e 's/CgiTree?//' -e 's/" name//'`

# we load the splash page
splash=`curl $params -A "$agent" -G -e https://isp.ozforces.com/frameset.vps -d "ispDn=o%3DOzForces%2Cou%3DClients%2Co%3DDOTV" https://isp.ozforces.com/splash.jsp`

# we go through the menu
tree=`curl $params -A "$agent" -e https://isp.ozforces.com/frameset.vps -G -d "$key" https://isp.ozforces.com/cgi-bin/CgiTree`

tree=`curl $params -A "$agent" -G -d "$key+E2" https://isp.ozforces.com/cgi-bin/CgiTree`

tree=`curl $params -A "$agent" -G -d "$key+E8" https://isp.ozforces.com/cgi-bin/CgiTree`

frameright=`curl $params -A "$agent" -G -d "$key+V8" https://isp.ozforces.com/cgi-bin/CgiTree | grep -o 'location=".*";' | sed -e 's/location=//' -e 's/";//'`

# we change the cookie's path
sed -e 's/\//\/product\/extensions\/dialup\//g' < $cookies > $cookies2 && mv $cookies2 $cookies

# we get the accounts page
page=`curl $params -A "$agent" -G -e https://isp.ozforces.com/cgi-bin/CgiTree?$key+V8 -d "sessionkey=$key¤tTreeNodeId=8&parentTreeNodeId=2" https://isp.ozforces.com/product/extensions/dialup/installedConfig.vps`

# we carry on in the menu
frameright=`curl $params -A "$agent" -G -d "$key+V9" https://isp.ozforces.com/cgi-bin/CgiTree | grep -o 'location=".*";' | sed -e 's/location=//' -e 's/";//'`

# we get the page at last
page=`curl $params -A "$agent" -G -e https://isp.ozforces.com/cgi-bin/CgiTree?$key+V9 -d "sessionkey=$key¤tTreeNodeId=9&parentTreeNodeId=8" https://isp.ozforces.com/product/extensions/dialup/dialupAccount.vps`

# we parse the page to get the data
upload=`echo $page | grep -o 'Current Period: .* MB upload' | sed -e 's/Current Period: //' -e 's/ MB upload//'`
download=`echo $page | grep -o 'upload, .* MB download' | sed -e 's/upload, //' -e 's/ MB download//'`

echo $upload
echo $download

rm $cookies  


For some reason, we have to go through the whole menu, probably to set some session stuff. Plus the cookie. As a result, the script has to load quite a lot of pages before getting to the usage page, and is pretty slow. But it works :)