#!/bin/bash function display_help() { echo "${0} Usage :" echo -e "\t-u --user\tSpecify the username" echo -e "\t-p --password\tSpecify the password" echo -e "\t-h or --help\tThis help" echo "" echo "Examples :" echo -e "\tSend \"My message\" to your mobile phone :" echo -e "\t\t${0} -u myuser -p mypassword My message" echo -e "\tSend content from STDIN to your mobile phone :" echo -e "\t\t${0} -u myuser -p mypassword -" } GET_OPT=`getopt -o hu:p: --long help,user:,password: -n "${0} parameters" -- "${@}"` if [ ! "${?}" == "0" ] ; then display_help exit 1 fi eval set -- "$GET_OPT" while true ; do case ${1} in -u|--user) NOM="${2}" shift 2 ;; -p|--password) PASS="${2}" shift 2 ;; -h|--help) display_help shift exit 0 ;; --) MESSAGE="`echo ${@} | sed 's|^-- ||g'`" shift break ;; *) display_help >&2 exit 1 ;; esac done if [ -z "${NOM}" -o -z "${PASS}" ] ; then echo "You need to specify Username and Password" >&2 display_help >&2 exit 1 fi if [ "${MESSAGE}" == "-" ] ; then if [[ ! -t 0 ]]; then while read line ; do MESSAGE="${MESSAGE}%0D${line}" MESSAGE=`echo ${MESSAGE} | sed 's|^-%0D||g'` done < <(cat -) else echo "STDIN is empty" >&2 exit 1 fi fi if [ -z "${MESSAGE}" ] ; then echo "You need to specify the message to send" >&2 display_help >&2 exit 1 fi if ! which which > /dev/null 2>&1 ; then echo "which is not installed" exit 1 elif which curl > /dev/null 2>&1 ; then echo using curl BIN="curl -i" elif which wget > /dev/null 2<&1 ; then echo using wget BIN="wget --save-headers -qO -" elif true ; then echo "None of curl or wget installed" >&2 exit 1 fi envoi=$(${BIN} "https://smsapi.free-mobile.fr/sendmsg?user=${NOM}&pass=${PASS}&msg=${MESSAGE}" 2>&1) retour_HTTP=$(echo "${envoi}" | awk '/HTTP/ {print $2}') case $retour_HTTP in 200) echo "Le SMS a été envoyé sur votre mobile." exit 0 ;; 400) echo "Un des paramètres obligatoires est manquant.";; 402) echo "Trop de SMS ont été envoyés en trop peu de temps.";; 403) echo "Le service n'est pas activé sur l'espace abonné, ou login / clé incorrect.";; 500) echo "Erreur côté serveur. Veuillez réessayer ultérieurement.";; esac exit 1