15/12/2011
autovodafone versione 0.3: esecuzione senza privilegi di root e riduzione del numero di file temporanei
Dopo le versioni 0.1 e 0.2 di autovodafone, ecco la versione 0.3 ulteriormente ottimizzata rispetto alle precedenti:
#!/bin/bash
#File di log
FILELOG=/var/log/autovodafone
data=$(date)
echo "Inserisci il destinatario:"
read destinatario
if [[ ! $destinatario =~ "+39" ]]; then
destinatario="+39$destinatario"
fi
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 -e s/"//g -e "s/ /+/g" -e "2p" out > out1
url="http://mmsviaweb.net.vodafoneomnitel.it"
url1=$(cat out1)
url2=$(echo "$url$url1")
curl -b cookiev.txt $url2 > result
if grep -q "SendMessage=1" result;then
echo "messaggio inviato"
echo "$data: messaggio inviato" >> $FILELOG
else
echo "il messaggio non e' stato inviato"
echo "$data: il messaggio non e' stato inviato" >> $FILELOG
fi
rm out*
rm cookiev.txt
rm text
rm encoded
rm result
exit 0
In particolare, mediante il comando:
sed -n -e s/"//g -e "s/ /+/g" -e "2p" out > out1
ho ridotto il numero di file temporanei, grazie all'utilizzo ottimizzato di sed (espressioni multiple).
Per poter eseguire lo script senza i privilegi di root, dovete prima identificare il proprietario dei seguenti file:
autovodafone
urlencoding.sed
/var/log/autovodafone
e nel caso in cui ce ne fosse bisogno, potete modificare il loro owner mediante il comando:
nightfly@nightbox:~$ sudo chwon vostrouser:vostrogruppo nomefile
A questo punto l'esecuzione dello script senza privilegi di root dovrebbe filare liscia.
Bye.
Aggiornamento
Il servizio Vodafone MMS gratis da Web non esiste più (ne è la riprova il timeout che ci becca ad ogni tentativo di contattare la URL http://mmsviaweb.net.vodafoneomnitel.it). Per maggiori informazioni potete consultare questo 3d.
20:52 Scritto da: nazarenolatella in SO: Linux | Link permanente | Commenti (0) | Segnala | Tag: mms gratis, vodafone mms, sed, root, chown, regex | OKNOtizie |
Facebook
23/11/2011
autovodafone versione 0.2: URL-encoding completo e meccanismi di controllo
Come avevo già preannunciato in questo post, ecco la versione 0.2 dello script 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 script venga eseguito da root
if [ "$UID" -ne "$ROOT_UID" ];then
ERRORE1="Errore 1: Devi essere root per eseguire lo script"
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 script rimane comunque il benvenuto.
A presto.
09:00 Scritto da: nazarenolatella in SO: Linux | Link permanente | Commenti (0) | Segnala | Tag: mms gratis, bash, script, scripting, vodafone, url-encoding, sed | OKNOtizie |
Facebook
















