first, a change-log
REV 0 : Initial Release
REV 1 :
+ Verbosity
+ Checking message length
* Cleaned up regex
REV 2 :
+ Directory (alias)
+ Error checking numbers
Ver 2.0:
25-Nov-2008
Major overhaul, re-written from scratch
* Moved directory out of script to external file
* Moved cookie to /tmp (changeable)
+ Added argument processing
* NUMBER must now be given as an argument to -n option
+ Added option to silence output
+ Added option to display help
+ Added option to override default user and pass
+ Added option to override default directory
* Will detect old cookie-and try to re-use instead of logging in every-time.
+ Error checking of username and password
+ Handles "Session expired" error to an extent.It will keep re-trying until success
* Some more small changes that I can't remember
Installation is pretty standard. It uses cURL to do the heavy lifting so you'll need that. The directory file now defaults to ~/.wsmsdir. This is a comma seperated text file with name-number pairs
eg:
hotchick1,123943Change the default values for user and pass. Although this is not required anymore because you can give username and password info to the script using the -u and -p options now. It is not recommended if you share you computer with snoopy people. The script will leave a cookie file in /tmp by default (change "cookiebase" to whatever you like if you want to change this) name USERNAME.wsmscookie (this can be changed on the fourth line from the bottom).If you consider this feature a security risk or something, uncomment the last line to delete the cookie everytime after you send a message.
hotchick2,123432
daddy,12432
wife,1498052
#!/usr/bin/env bash
##########################################
## ##
## \|/ ##
## '-D ##
## BDWSMS 2.0 ##
## (Bash Dhiraagu Web-Sms) ##
## ##
##########################################
##
## Written By, kudanai [2008]
## http://kudanai.blogspot.com
##
## This script is released as-is and
## without any liability on my behalf.
##
## You are free to make modifications
## and redistribute. Credits where they
## are due are appreciated, but not
## necessary.
##
## Please submit feature requests and
## bug reports to moc.liamg@ianaduk
## (email address is written backwards)
##
##########################################
user=DEFAULT-USER
pass=DEFAULT-PASS
#---leave these if you don't know what they mean --##
dirlist=~/.wsmsdir
cookiebase=/tmp
## ----no need to edit beyond this point --##
version=2.0
cookie=0
number=0
msg=0
verbose=1 #change to 0 if you want silence as default
uflag=0
pflag=0
main()
{
if [ -e ${dirlist} ];then dcheck=`cat ${dirlist} | grep -w ${number} | cut -f2 -d","`;fi
if [ -n "${dcheck}" ]
then
number=${dcheck}
fi
if [ -z `echo ${number} | grep -E "^7[6-9][0-9]{5}$"` ]
then
echo "ERROR: Invalid Number or unknown alias"
exit 1
fi
if [ $verbose -gt 0 ]
then
echo "Sending to: ${number}"
if [ `expr length "${msg}"` -gt 140 ]
then
echo "WARNING: Message will be truncated at ...${msg:130:10}"
fi
fi
if [ -e ${cookie} ]
then
if [ $verbose -gt 0 ];then echo "Found cookie file - will try to re-use";fi
sendsms
else
login
fi
}
login()
{
if [ $verbose -gt 0 ];then echo "Authenticating ... Getting cookie";fi
ret=`curl -s --compressed -c ${cookie} -d "username=${user}" -d "password=${pass}" \
http://websms.dhimobile.com.mv/cgi-bin/websms/index.pl`
if [ -n "`echo ${ret} | grep -i "password is incorrect"`" ]
then
echo "ERROR: Incorrect password"
exit
elif [ -n "`echo ${ret} | grep -i "you are not the"`" ]
then
echo "ERROR: Incorrect username"
exit
elif [ -n "`echo ${ret} | sed -n \"s/.*\( 0 more \).*/\1/p\"`" ]
then
echo "ERROR: Daily quota reached"
exit
else
sendsms
fi
}
sendsms()
{
if [ $verbose -gt 0 ];then echo "Attempting to send message... ";fi
ret=`curl -s --compressed -b ${cookie} -d "mobilenumber=${number}" -d "message=${msg:0:140}" \
http://websms.dhimobile.com.mv/cgi-bin/websms/send_message.pl`
rem=`echo ${ret} | sed -n 's/.*\([yY]ou .* Day\).*/\1/p'`
if [ -n "${rem}" ]
then
echo ${rem}
exit
else
if [ $verbose -gt 0 ];then echo "ERROR: session expired? trying again";fi
rm ${cookie}
login
fi
}
printhelp()
{
echo "BDWSMS - KudaNai (kudanai.blogspot.com)"
echo "Version: $version"
echo "USAGE: $0 [OPTIONS...] -n number 'message'"
echo
echo "OPTIONS"
echo " -h Print this help and exit"
echo " -v Print version information"
echo " -s Silent. Supress additional information."
echo " -d Overried default directory file. The Directory file"
echo " is a comma seperated file containing name,number pairs"
echo " -u USERNAME Override default username. Must use with -p"
echo " -p PASSWORD Override default password. Must use with -u"
echo
echo "Please note that the -n argument is MANDATORY"
exit 1
}
while getopts 'vshu:p:n:d:' OPTION
do
case $OPTION in
s) verbose=0
;;
v) echo "BDWSMS Version: ${version} [2008]"
exit 0
;;
u) user="${OPTARG}"
uflag=1
;;
d) dirlist="${OPTARG}"
;;
p) pass="${OPTARG}"
pflag=1
;;
n) number="${OPTARG}"
;;
h) printhelp
;;
?) printhelp
exit;;
esac
done
shift $(( $OPTIND - 1 ))
msg=$1
if [[ -z ${number} ]] || [[ -z ${msg} ]]
then
printhelp
elif [[ ${uflag} -ne ${pflag} ]]
then
echo "ERROR: You must specify values for both -u and -p options or not at all"
printhelp
else
cookie="${cookiebase}/${user}.wsmscookie"
main
fi
#rm ${cookie}
6 Comments:
thnx...this is very handy...
how about an option to display the number of messages you have remaining?
The website is really screwed up isn't it? It took me some 15 retries to get the login working. Thanks for working the automatic retries into your script. But once it is logged in it seems to work, the problem appears to be with the initial login.
and I wonder how this work!!cud some one expalain it pls?
Sure just hit me on facebook or twitter or whatever.
This looks like a very useful script, I'll have to give it a try.
Post a Comment