Ayant envie de m’amuser un peu avec curl, j’ai décidé de réaliser un script d’envoi de texto via la messagerie SFR, après avoir remarqué l’existence d’un bouton Ecrire un Texto / MMS. Je n’ai pas cherché en détail la tarification, mais dans mon cas j’ai droit à 10 textos gratuits vers les numéros SFR par jour.
Le script est assez simple au final, mais il permet de réviser pas mal d’options différentes de curl : mode silencieux (-s) affichage des entêtes HTTP reçues du serveur (-i), requête POST avec urlencoding (–data-urlencode), requête POST multipart/form-data (-F), et envoi de cookie (–cookie).
Il permet également de revoir la manipulation de chaînes de caractères en bash, ainsi qu’une utilisation assez basique d’awk.
Voici sans plus attendre le script :
#!/bin/sh # Script d'envoi de texto via la messagerie SFR # Copyright (C) 2011 Raphaël HUCK <raphael:huck|gmail:com> # Fichier de configuration /etc/s3.conf # ------------------------------------- # USERNAME=xxxxxx # PASSWORD=xxxxxx # ------------------------------------- CONFFILE="/etc/s3.conf" URLCAS="https://www.sfr.fr/cas/login?domain=mire-xmscomposer&service=http%3A%2F%2Fwww.sfr.fr%2Fxmscomposer%2Fj_spring_cas_security_check" URLCOMPOSE="http://www.sfr.fr/xmscomposer/index.html?todo=compose" URLSEND="http://www.sfr.fr/xmscomposer/mc/envoyer-texto-mms/confirm.html" CURL=$(which curl) AWK=$(which awk) if [ ! -f "$CONFFILE" ]; then echo "Fichier de configuration $CONFFILE non trouve" exit 1 fi USERNAME=$($AWK -F'=' '/USERNAME/ {print $2}' $CONFFILE) PASSWORD=$($AWK -F'=' '/PASSWORD/ {print $2}' $CONFFILE) if [ $# -lt 2 ]; then echo "Usage: $0 destinataire message" exit 1 fi RECIPIENT="$1" MESSAGE="$2" if [ ${#RECIPIENT} -ne 10 ]; then echo "Le numero du destinataire n'est pas valide" exit 1 fi LENGTH=${#MESSAGE} NUMBER=$(($LENGTH / 140 + 1)) echo "------------------------------------------------------------------------" echo "Destinataire : $RECIPIENT" echo "Message : $MESSAGE" echo "------------------------------------------------------------------------" echo "Longueur du message : $LENGTH" echo "Nombre de textos : $NUMBER" TICKET=$($CURL -s "$URLCAS" | $AWK -F'"' '/loginTicket/ {ORS = ""; print $6}') INFOS=$($CURL -s -i --data-urlencode loginTicket="$TICKET" --data-urlencode username="$USERNAME" --data-urlencode password="$PASSWORD" "$URLCAS" | $AWK '/(Location|CASTGC)/') LOCATION=$(echo "$INFOS" | $AWK '/Location/ {print $2}') COOKIE=$(echo "$INFOS" | $AWK '/CASTGC/ {sub(/;/, ""); print $2}') COOKIE=$($CURL -s -i --cookie "$COOKIE" "$LOCATION" | $AWK '/JSESSIONID/ {sub(/;/, ""); print $2}') $CURL -s -o /dev/null --cookie "$COOKIE" "$URLCOMPOSE" INFOS=$($CURL -s --cookie "$COOKIE" -F "msisdns=$RECIPIENT" -F "textMessage=$MESSAGE" $URLSEND | $AWK '/Texto gratuit/') SENT=${INFOS#*<strong>} SENT=${SENT%%</strong>*} REMAINING=${INFOS##*<strong>} REMAINING=${REMAINING%</strong>*} echo "" echo "Textos envoyes : $SENT" echo "Textos restants : $REMAINING"
Add your comment below, or trackback from your own site.
Subscribe to these comments.
Be nice. Keep it clean. Stay on topic. No spam.
You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">