#!/bin/sh # postsms # liest Handynummer von der Kommandozeile und Nachricht von stdin. # Copyright (C) Harald Milz und Linux New Media AG 2001 # Licensed under the GNU General Public License Version 2 if [ $# -gt 4 ] ; then echo "maximal vier Rufnummern gleichzeitig!" echo "der Rest geht verloren." exit fi BASEURL="http://freesms.web.de/SMS+schreiben" SMSNUMS=$* # so tun als wäre man Netscape USERAGENT="Mozilla/5.0" # temporäres Verzeichnis herstellen TEMPDIR=$(mktemp -d /tmp/postsms.XXXXXX) cd $TEMPDIR # und Nachricht einfangen, nur erste 120 Zeichen, eine Zeile MESSAGE=$(fmt -w 120 - | head -1) # session handle besorgen # holt den Namen der Cookie-Imagedatei und der ACTION lynx -source "$BASEURL"/ > text.html IMAGE=$(sed -n 's/^.*src=\"\/\(.*SMS.*.*\)\" wi.*/\1/ip' text.html) ACTION=$(sed -n 's/^.*action=\"\/\(.*\)" method.*/\1/ip' text.html) CSTRING=$(sed -n 's/^.*c_cstring.*value=\"\(.*\)\">.*$/\1/ip' text.html) UID1=$(sed -n 's/^.*uid1.*value=\"\([^\"]*\)\">.*$/\1/ip' text.html) # holt die Imagedatei selbst und extrahiert die dreistellige Zahl COOKIE=$(lynx -dump "http://freesms.web.de/$IMAGE" | giftopnm | gocr - | sed 's/ *//') # da das Cookie eine gewisse Lebensdauer hat, können wir es # gleich zeitsparend mehrfach nutzen (max viermal). for NUM in $SMSNUMS ; do # alle nicht-Ziffern rauswerfen NUM=$(echo $NUM | sed 's/[^[:digit:]]//g') PROVIDER=$(echo $NUM | sed -n 's/^\(....\).*/\1/p') NUMMER=$(echo $NUM | sed -n 's/^....//p') # jetzt Nachricht posten und freuen. QUERY="provider=$PROVIDER" QUERY="$QUERY&smsnr=$NUMMER" QUERY="$QUERY&message=$MESSAGE" QUERY="$QUERY&magicnumber=$COOKIE" QUERY="$QUERY&uid1=$UID1" QUERY="$QUERY&banner1.x=1" QUERY="$QUERY&banner1.y=1" QUERY="$QUERY&sendemail=" QUERY="$QUERY&email=" QUERY="$QUERY&rv_counter=0" QUERY="$QUERY&c_cstring=$CSTRING" echo -e "$QUERY\n---" | lynx -post_data -useragent="$USERAGENT" "http://freesms.web.de/$ACTION" >/dev/null echo message sent to $NUM done cd rm -fr $TEMPDIR