Come avevo già preannunciato in questo post, ecco la versione 0.2 dello scrip bash per l’invio di MMS gratis mediante Vodafone.it:
#!/bin/bash #File di log FILELOG=/var/log/autovodafone ROOT_UID=0 #Controllo che lo scrip venga eseguito da root if [ "$UID" -ne "$ROOT_UID" ];then ERRORE1="Errore 1: Devi essere root per eseguire lo scrip" echo $ERRORE1 echo "$(date) $ERRORE1" >> $FILELOG exit 1 fi data=$(date) echo "Inserisci il destinatario:" read destinatario echo "Inserisci l'oggetto del messaggio:" read oggetto echo "Inserisci il testo del messaggio:" read testo echo "$testo" > text cat text | sed -f urlencoding.sed > encoded enc=$(cat encoded) curl -c cookiev.txt -F "username=vostrousername" -F "password=vostrapassword" https://www.vodafone.it/190/trilogy/jsp/login.do 2&>1 curl -b cookiev.txt --data "recipient=$destinatario&subjecttosend=$oggetto&SmilName=&TextName=$enc&ImageName=&AudioName=&nextPage=/web/servletresult.html" http://mmsviaweb.net.vodafoneomnitel.it/WebComposer/web/elaborapop.jsp | grep -o -E '"s*(.*)>(.*)"' > out sed -n '2p' out > out1 sed -e s/"//g out1 > out2 sed -e "s/ /+/g" out2 > out3 url="http://mmsviaweb.net.vodafoneomnitel.it" url1=$(cat out3) url2=$(echo "$url$url1") curl -b cookiev.txt $url2 > result if grep -q "SendMessage=1" result;then echo "$data: messaggio inviato" >> $FILELOG else echo "$data: il messaggio non e' stato inviato" >> $FILELOG fi rm out rm cookiev.txt rm text rm encoded rm result exit 0 Nella fattispecie, ho creato il file urlencoding.sed per la codifica del testo relativo all'MMS, il cui contenuto è il seguente: s/%/%25/g s/ /%20/g s/ /%09/g s/!/%21/g s/"/%22/g s/#/%23/g s/$/%24/g s/&/%26/g s/'''/%27/g s/(/%28/g s/)/%29/g s/*/%2a/g s/+/%2b/g s/,/%2c/g s/-/%2d/g s/./%2e/g s///%2f/g s/:/%3a/g s/;/%3b/g s//%3e/g s/?/%3f/g s/@/%40/g s/[/%5b/g s//%5c/g s/]/%5d/g s/^/%5e/g s/_/%5f/g s/`/%60/g s/{/%7b/g s/|/%7c/g s/}/%7d/g s/~/%7e/g s/ /%09/g Ho voluto avvalermi di sed per omogeneità, ciò non significa che tale operazione non sia fattibile attraverso linguaggi di scripting esterni (ad esempio perl). Inoltre, mediante le seguenti righe di codice: if grep -q "SendMessage=1" result;then echo "$data: messaggio inviato" >> $FILELOG else echo "$data: il messaggio non e' stato inviato" >> $FILELOG fi
ho previsto dei controlli (molto basilari) relativi all’esito dell’operazione di inoltro degli MMS, il cui risultato verrà salvato sul file di log (con data e ora).
Qualunque suggerimento per estendere e/o migliorare lo scrip rimane comunque il benvenuto.
A presto.
autovodafone versione 0.2: URL-encoding completo e meccanismi di controlloultima modifica: 2011-11-23T09:00:00+01:00da
Reposta per primo quest’articolo