giffgaff-credit-checker v1.5 [21 Oct 2016] by Dominic
Check and show remaining credit or allowances on phone accounts from Giffgaff in UK (http://www.giffgaff.com/), and issue warnings if below pre-set warning levels. Written in bash for use on Linux or (for Windows) Cygwin.
Account information (for each phone/sim) should be in a conf file shown by the -c option. If this is unspecified giffgaff-credit-checker.sh will look for giffgaff-credit-checker.conf in the same location as giffgaff-credit-checker.sh. In the conffile, each account should be on a separate line (blank lines and lines beginning with a hash # symbol are ignored), with 2-9 whitespace-delimited fields thus:
username password [ nickname number credit dataMB voice_minutes texts goodybag_expiry(Days) ]
The 3rd and later fields are optional; the 5th and later fields refer to warning levels below which a message will be triggered.
Here is a 2-line conf file example:
smoothtalker MyS3cr3t FredQuimby 07732144865 4
madcaller hard2guess Jim\ Jones 07987\ 654321 0 200 50 40 10
This will result in warning messages to the 'standard error' device if the credit on the first phone is below £4, and for the second phone (which has a goodybag) it will result in a warning if there are, for this month, 50 minutes or less left for normal calls, or 40 texts or less, or 200MB or less - or less than 10 days to expiry of the goodybag.
If you set any warn level to zero then no warnings will be issued against that test.
- The 'nickname' and 'number' just make the output easier to follow (and option -n if used tests against the nickname); if they contain spaces these must be escaped in the conffile with backslashes. Of course it would be logical (though not required) for the number to be the actual number of the associated sim, the nickname can be anything and is not used by or passed to Giffgaff.
- A returned value of 99999 means 'Unlimited'.
- Errors and warnings are sent to the standard error device whereas normal data is sent to the standard output device - although these are normally one and the same you can direct them to separate locations so that, for instance, warnings are emailed out whereas normal data is appended to a data file.
-c conffile - specify name and location of conffile
-d - debug mode - more verbose, only for testing
-h - show help and exit
-l - show changelog and exit
-n nickname - only run for the specified nickname (which must be listed in conffile)
-q - quiet mode - only show warnings or errors
-r - retain data and/or re-use any existing retained data i.e. skip re-downloading
-s - output in csv format (implies -t)
-t - skip program title (pipe to column -t for prettier display)
-v - verbose mode - show login progress
awk bash curl coreutils grep lynx sed
form-extractor.sh (see http://www.timedicer.co.uk/programs/help/form-extractor.sh.php) which should be in the same directory as giffgaff-credit-checker.sh
Copyright 2016 Dominic Raferd. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
1.5 [21 Oct 2016]: small fix for change on giffgaff page
1.4 [15 Oct 2016]: small fix for change on giffgaff page, check ssl certificate, change to order of entries in conf file (sorry, giffgaff change forced this)
1.3 [02 Jun 2016]: allow to work for different users
1.2 [31 Mar 2016]: bugfix for changes to giffgaff webpage
1.1 [19 Nov 2015]: fix change from http://giffgaff.com to http://www.giffgaff.com
1.0 [18 May 2015]: move cookiejar files from /tmp to /var/tmp
0.9 [06 May 2015]: add tests for dependencies, valid date extraction and success of curl session; use lynx to strip html; change order of fields again
0.8 [07 Apr 2015]: change to conf format due to changed giffgaff page layout
0.7 [07 Nov 2014]: pick up data fields for queued or recurring goodybag and in such case skip date expiry test
0.6 [03 Nov 2014]: change -n to test against nickname
0.5 [27 Oct 2014]: add some permission checking
0.4 [16 Oct 2014]: add -t option, add date/time with -s option
0.3 [08 Oct 2014]: improved csv output for -s, add -d and -r options
0.2 [07 Oct 2014]: add friendlyname and number to fields and output
0.1 [06 Oct 2014]: first version
- TimeDicer - Onsite/offsite data backup for Windows (uses rdiff-backup)
- Finding a 4D Backup Solution
- Web Scraping How To - extracting data from web sites
Here is a selection of some (other) programs I have written, most of which run from the command line (CLI), are freely available and can be obtained by clicking on the links. Dependencies are shown and while in most cases written for a conventional Linux server, they should run even on a Raspberry Pi, and many can run under Windows using Cygwin. Email me if you have problems or questions, or if you think I could help with a programming requirement.
- TimeDicer - Onsite/offsite data backup for Windows (uses rdiff-backup) [ GNU/Linux & MS Windows©: 2008-16 ]
- rdiffweb-install - GNU/Linux script to install rdiffWeb. [ GNU/Linux: 2011-16 ]
- rdiff-backup-regress - GNU/Linux script to regress an rdiff-backup archive. [ GNU/Linux: 2012-16 ]
Debian/Ubuntu kernel and LVM Utilities
- kernel-remove - GNU/Linux script to list the installed GNU/Linux kernels in a Debian-based distro (e.g. Ubuntu), and can be used to remove an unwanted kernel and related packages, updating grub appropriately. (Ubuntu Tweak can do the same but kernel-remove.sh is a command-line script so does not require GUI.) [ GNU/Linux-Debian/Ubuntu: 2010-15 ]
- kernel-update - GNU/Linux script to install/update Ubuntu kernel (also optionally btrfs-progs and duperemove) with latest version. [ GNU/Linux-Ubuntu: 2015-16 ]
- lvm-usage - GNU/Linux script to show available disk space and how it is used; run as cron job to warn if usage is above a set percentage. Provides additional information if LVM is in use. [ GNU/Linux-Debian/Ubuntu: 2012-16 ]
- lvm-delete-snapshot - GNU/Linux script to remove LVM snapshot that has been left over by another process. [ GNU/Linux-Debian/Ubuntu: 2012-16 ]
Dellmont / Three / Giffgaff / Vodafone - VoIP and Mobile Phone Account Utilities
- dellmont-credit-checker - GNU/Linux script to check credit balance on many Dellmont / Finarea / Betamax portals such as voicetrading.com and voipdiscount.com. [ GNU/Linux: 2008-16 ]
- sms-sender - GNU/Linux script to send text messages using Dellmont’s voicetrading.com. [ GNU/Linux: 2012-16 ]
- get-vt-cdrs - GNU/Linux script to download CDRs (call detail records) from Dellmont’s voicetrading.com or voippro.com. [ GNU/Linux: 2010-16 ]
- saynoto0870 - For people in UK, a GNU/Linux script which performs automated lookup of the www.saynoto0870.com database, finding cheap or free geographic number replacements for expensive non-geographic (087* or 084*) numbers. [ GNU/Linux: 2012-12 ]
- three-credit-checker - GNU/Linux script which checks credit/calls/text/data remaining on a mobile phone account with three.co.uk. [ GNU/Linux: 2014-16 ]
- vodafone-compile-bills - GNU/Linux script which reprocesses downloaded call record 'csv' files from vodafone.co.uk so that they can be easily analysed via spreadsheet - including analysis of bundled minutes which even Vodafone do not seem able to perform! [ GNU/Linux: 2012-16 ]
- sleepwalker - Windows© program which can be run from a remote machine to 'wake up' a Windows© machine behind a router, wait for it to start and then initiate Remote Desktop session. [MS Windows©: 2008-14]
- nano-update - GNU/Linux program to check/configure/make/install editor nano to the latest stable version found at http://www.nano-editor.org. [ GNU/Linux: 2015-16 ]
- pdf-compress - GNU/Linux program to create smaller b/w pdf file from an original large pdf file, especially when original resulted from scanning. [ GNU/Linux: 2016-16 ]
- form-extractor - GNU/Linux program to extract form tags from a web page or downloaded file. [ GNU/Linux: 2012-16 ]
- 123-dns-manager - GNU/Linux program for automated 123-Reg.co.uk Advanced DNS management. [ GNU/Linux: 2016-16 ]
- 123-dns-sync - GNU/Linux program to update DNS record at 123-Reg.co.uk to match external ip. [ GNU/Linux: 2016-17 ]
- recover-space - GNU/Linux program to enable a virtual disk volume to be compacted. [ GNU/Linux: 2014-15 ]
- tiny-device-monitor - GNU/Linux program to test webpages (including password-protected) or machines to check they are live; use as a cron job for your own websites, for hardware presenting a webpage, or for any machines with a presence on your local LAN or on the internet. [ GNU/Linux: 2009-16 ]
- dutree - GNU/Linux program to show a tree-style list of files and directories at the specified location and greater than the specified size (default 1GB). [ GNU/Linux: 2012-15 ]
- disk-wiper - GNU/Linux script to wipe a disk drive comprehensively and also check it for bad blocks. For use on a surplus drive (not SSD, not GPT) before passing to a third party. [ GNU/Linux: 2011-16 ]
- myip-upload - GNU/Linux and Windows (Cygwin) script to obtain external ip and upload it to remote site/file by ftp. [ GNU/Linux & MS Windows©: 2014-16 ]
- man2text - GNU/Linux one-liner program to convert man page output to straightforward text. [ GNU/Linux: 2012-12 ]
- Accounts - Multi-business multi-currency accounting software, uses Access [MS Windows©: 1996-2016]
- Rents Program - Residential lettings/landlord front office program, with many special features for UK market [MS Windows©: 1991-2016]