# [TIP] Spedire sms da linea di comando

## fedeliallalinea

Introduzone

Mi serviva uno script per scuola per spedire sms da linea di comando e' cosi' ho fatto questo script.

Lo script pensera' lui a dividere il messaggio in piu' messaggi se supera i 160 caratteri

Di cosa avete bisogno

Purtroppo questo script si basa su un account mail che abbia un sms server, questo esiste per quasi tutte le universita' in svizzera sponsorizzato dalla switch. Inoltre si appoggia sui programmi msmtp e nail.

Installazione

Per prima cosa installiamo e configuriamo nail e msmtp. 

Smascheriamo msmtp e lo installiamo

```
# echo "mail-mta/msmtp" >> /etc/portage/package.keywords

# emerge msmtp
```

Ora creiamo il file .msmtprc nella nostra home directory

```
account default

host mail.doveviconnettete.it

from nick@qualcosa.it

auth login

user nick@qualcosa.it

password xxxxx
```

Ora e' il momento di nail

```
# emerge nail
```

Ora diciamo a nail di usare msmtp per spedire le mail quindi editiamo il file /etc/nail.rc e cambiano la linea (si trova alla fine del file)

```
set smtp=localhost   // o si rimuove o si commenta
```

con

```
set sendmail=/usr/bin/msmtp
```

Ora avete configurato tutti i programmi. A questo punto prendete il codice seguente e nominatelo sendsms e lo mettere in /usr/local/bin (ricordate di mettere i permessi per l'esecuzione)

```
#!/bin/sh

function usage {

    echo "Usage: sendsms <telephone number> <\"message\">"

    echo "Note: use \n for new line"

    exit 1

}

[ "${1}" = "-h" ] && usage

[ -z "${1}" ] && usage

[ -z "${2}" ] && usage

# calcola la lunghezza del account mail

FROM_LENG=`cat ~/.msmtprc | grep from | awk '{print $2}' | wc -c`

# lunghezza del messaggio sms

SMS_LENG=`echo -e $2 | wc -c`

let TOT_LENG=SMS_LENG+FROM_LENG

SEVICE_SMS='sms.switch.ch'

SMS=`echo -e $2`

# fintanto che il messaggio e' piu' lungo di 160

# char fai il loop

while [ $TOT_LENG -gt 160 ]

do

  # lunghezza massima del sms

  let LENG=160-FROM_LENG

  #echo "`echo -e ${SMS} | head -c ${LENG}`"

  # spedisci i primi LENG caratteri per sms

  echo "`echo -e ${SMS} | head -c ${LENG}`" |nail -s " " ${1}@${SEVICE_SMS}

  # setta la nuova lunghezza del sms e il nuovo contenuto

  let SMS_LENG=SMS_LENG-LENG

  SMS=`echo ${SMS} | tail -c ${SMS_LENG}`

  let TOT_LENG=SMS_LENG+FROM_LENG

done

#echo -e "${SMS}"

echo -e "${SMS}" |nail -s " " ${1}@${SEVICE_SMS}
```

Potete cambiare l'host che da il servizio sms cambiando la variabile SEVICE_SMS

Come usarlo

Per usare il programma e' semplicissimo basta che si lancia nel seguente modo

```
$ sendsms numero "messaggio da spedire"
```

PS: spero che a qualcuno servira' anche se biosogna avere un account mail che dia anche il servizio per gli sms

----------

## randomaze

 *fedeliallalinea wrote:*   

> Purtroppo questo script si basa su un account mail che abbia un sms server, questo esiste per quasi tutte le universita' in svizzera sponsorizzato dalla switch

 

 :Shocked: 

----------

## fedeliallalinea

 *randomaze wrote:*   

>  

 

Che ho detto di strano?

----------

## gutter

 *fedeliallalinea wrote:*   

>  *randomaze wrote:*     
> 
> Che ho detto di strano?

 

Ma in svizzera gli accoount mail vi permettono di spedire sms verso qualunque numero di cell   :Question:   :Question: 

----------

## fedeliallalinea

 *gutter wrote:*   

> Ma in svizzera gli accoount mail vi permettono di spedire sms verso qualunque numero di cell   

 

Quello della mia uni e anche quella di altre uni si  :Smile: 

----------

## randomaze

 *fedeliallalinea wrote:*   

>  *randomaze wrote:*     
> 
> Che ho detto di strano?

 

Beh, nelle UNI italiane é già molto se ti danno la mail, gli SMS neanche pagando.... (a prop.di pagare, qualcuno consoce servizi, anche a pagamento, con i quali gli utenti italiani possono inviare SMS via mail?)

Cmq. credo che il tuo tip funzioni senza problemi anche con ssmtp

----------

## fedeliallalinea

 *randomaze wrote:*   

> Cmq. credo che il tuo tip funzioni senza problemi anche con ssmtp

 

Il fatto che a me con ssmtp non mi autenticava al mail di scuola mentre con msmtp tutto ok

----------

## abaddon83

si perchè sono un po piu' saggi di noi italiani e non creano attacchi dos a fuori a di spammare a messaggini...

bello comunque^^

----------

## gutter

 *randomaze wrote:*   

> 
> 
> [CUT]
> 
> Beh, nelle UNI italiane é già molto se ti danno la mail, gli SMS neanche pagando.... (a prop.di pagare, qualcuno consoce servizi, anche a pagamento, con i quali gli utenti italiani possono inviare SMS via mail?)
> ...

 

Infatti a me non mi hanno dato nessun account mail  :Sad: 

----------

## X-Drum

 *fedeliallalinea wrote:*   

>  *gutter wrote:*   Ma in svizzera gli accoount mail vi permettono di spedire sms verso qualunque numero di cell    
> 
> Quello della mia uni e anche quella di altre uni si 

 

lol non ho parole!!! a noi danno soltanto un volgare account email.....  :Twisted Evil: 

cmq complimenti per lo script!!!

----------

## clem

bello bello, lo installo subito!   :Very Happy: 

grazie!

----------

## fedeliallalinea

 *clem wrote:*   

> bello bello, lo installo subito!  
> 
> grazie!

 

Ehheheh mi fa piacere vederti anche qui  :Very Happy: 

----------

## Cima

Molto bene, lo installo anch'io

grande fedeliallalinea   :Mr. Green: 

----------

## koma

naturalmente dalla swizzera se do come prefisso +39 nn riesco a fare niente vero? Perchè magari un amico con un account di sto tipo lo trovo

----------

## fedeliallalinea

Si puoi solo spedire sms in svizzera

----------

## Cima

 *Quote:*   

> Ora avete configurato tutti i programmi. A questo punto prendete il codice seguente e nominatelo sendsms e lo mettere in /usr/local/portage (ricordate di mettere i permessi per l'esecuzione) 

 

non /usr/local/portage ma bensì /usr/local/bin

 :Wink: 

----------

## Cima

Funziona perfettamente, ho incominciato a bombardare la gente di SMS   :Very Happy: 

----------

## stefanonafets

Non c'entra niente:oops: , ma immagino che esista un modo per connettere il cellulare al pc ed usarlo per inviare SMS, no?

Se qualcuno ne sa qualcosa mi istruisce??? 

Grassie...

----------

## Josuke

si esiste: http://usefulinc.com/software/phonemgr

Lo script (per tornare al post) è fantastico..mi piacerebbe sapere qui in italia chi offre servizi del genere..ne sapete qualcosa?

----------

## hellraiser

per i clienti Vodafone è possibile usare smssens per mandare fino a 100 sms gratis [max 360 caratteri x sms]

innanzitutto bisogna registrarsi sul sito della vodafone, cioe www.190.it...poi installare "smssend" e scaricare anke un piccolo script

mi passo il link ke trovai a suo tempo...

http://zekiller.skytech.org/smssend_menu_en.html

mentre il link per lo script 

http://zekiller.skytech.org/fichiers/smssend/vodafoneit.sms

se qualke problema chiedete pure...

addios

----------

## [hammerfall]

 *Josuke wrote:*   

> si esiste: http://usefulinc.com/software/phonemgr
> 
> Lo script (per tornare al post) è fantastico..mi piacerebbe sapere qui in italia chi offre servizi del genere..ne sapete qualcosa?

 

questo sw sembra molto bello, peccato che non riesca a compilarlo a causa dell'ebuild rotta delle gsmlib  :Sad: 

----------

## fedeliallalinea

Ho cambiato /usr/local/portage con /usr/local/bin che chiaramente e' un mio errore

----------

## Dhaki

@ fedeliallalinea: uhm... questo account come si ottiene. cioé, presumo bisogni essere studenti uni vero? perché se é cosi devo ancora aspettare 2 anni...

P.S: ciao clem   :Very Happy: 

----------

## fedeliallalinea

 *Dhaki wrote:*   

> @ fedeliallalinea: uhm... questo account come si ottiene. cioé, presumo bisogni essere studenti uni vero?

 

Esattamente l'account ce l'hai solo se sei studente

----------

## federico

E' troppo elitario questo sistema...   :Crying or Very sad:   :Crying or Very sad:   :Crying or Very sad: 

----------

## Josuke

hammerfall: non so io lo usavo quando avevo il supporto bluetooth sul portatile...or anon ho più il portatile e me ne sono disinteressato..comunque io mal che andasse compilavo a mano

----------

## dakr

sempre per gli svizzeri, se non erro le uni funzionano con switch mentre i provider (ad esempio bluewin) offrono lo stesso servizio tramite ip-plus (chiaramente con un limite mensile di sms) ma questo io lo posso verificare solo più avanti, magari qualcun'altro lo può testare prima.

chiaramente la forma dell'indirizzo email dovrebbe essere del tipo:

```
xxxxxxxxxx@sms.ip-plus.net
```

PS: ottimo script, complimenti!Last edited by dakr on Wed Nov 17, 2004 11:30 am; edited 1 time in total

----------

## fedeliallalinea

@dakr: ma devi pagare un servizio per averlo giusto?

----------

## dakr

con bluewin se non erro no, però hai un limite mensile. se invece hai una linea dedicata con ip-plus allora si, devi acquisatre dei crediti.

in ogni caso questa sera provo e posto la risposta definitiva.

----------

## fedeliallalinea

 *dakr wrote:*   

> con bluewin se non erro no, però hai un limite mensile.

 

Io bluewin ce l'ho ma a chi devo mandare il mail? (nel senso @....)

----------

## dakr

allora prova con telefono@sms.ip-plus.net e dimmi se funziona, io adesso sono sulla rete dell'uni quindi uso il tuo di script  :Very Happy: 

----------

## PXL

umm.. ho provato dal mio account (freeway) di bluewin a inviarmi un sms tramite xxxxxx@sms.ip-plus.net 

non ho ricevuto né un sms, né una notifica di errore... 

in ogni caso, sempre per gli svizzeri che usano swisscom che hanno meno di 22 anni, posso gia inviare tramite www.natelskyline.ch sms gratis illimitati verso qualsiasi cellulare (in teoria svizzeri e esteri)... 

sono riuscito a recuperare un script in php che si interfaccia con natelskyline per poter inviare sms a più persone contemporaneamente, che automaticamente sdoppia in più messaggi... e tiene una rubrica più bella...

----------

## fedeliallalinea

PXL mai contento di nulla. Ecco la versione con la rubrica

```
#!/bin/sh

AGENDA="/path/to/file"

SEVICE_SMS='sms.switch.ch'

function usage {

    echo "Usage: sendsms <telephone number> <\"message\">"

    echo "Note: use \n for new line"

    exit 1

}

function getNumber {

    NUMBER=`cat ${AGENDA} | grep ${1} | sort | head -n 1 | awk '{print $2}'`

}

function getName {

    NAME=`cat ${AGENDA} | grep ${1} | sort | head -n 1 | awk '{print $1}'`

}

function sendsms {

    # calcola la lunghezza del account mail

    FROM_LENG=`cat ~/.msmtprc | grep from | awk '{print $2}' | wc -c`

    # lunghezza del messaggio sms

    SMS_LENG=`echo -e $2 | wc -c`

    let TOT_LENG=SMS_LENG+FROM_LENG

    SMS=`echo -e $2`

    # fintanto che il messaggio e' piu' lungo di 160

    # char fai il loop

    while [ $TOT_LENG -gt 160 ]

    do

      # lunghezza massima del sms

      let LENG=160-FROM_LENG

      #echo "`echo -e ${SMS} | head -c ${LENG}`"

      # spedisci i primi LENG caratteri per sms

      echo "`echo -e ${SMS} | head -c ${LENG}`" |nail -s " " ${1}@${SEVICE_SMS} 

      # setta la nuova lunghezza del sms e il nuovo contenuto

      let SMS_LENG=SMS_LENG-LENG

      SMS=`echo ${SMS} | tail -c ${SMS_LENG}`

      let TOT_LENG=SMS_LENG+FROM_LENG

    done

    #echo -e "${SMS}"

    echo -e "${SMS}" |nail -s " " ${1}@${SEVICE_SMS}

}

case $1 in

    -n|--name) 

        [ -z "$3" ] && usage

        getNumber $2

        getName ${NUMBER}

        if [ ! "${NAME}" = "$2" ]

        then

            echo "Non c'e' nessun contatto $2!" 

            exit

        fi

        sendsms ${NUMBER} "$3" ;;

    -h|--help) 

        usage ;;

    *) 

        [ -z "$2" ] && usage

        sendsms $1 "$2" ;;

esac

exit 0
```

Bisogna cambiare la variable AGENDA con la locazione del file che conterra' la vostra lista di contatti. Il file deve essere messo in questo modo

```
gigo 65464

zio 456754

pino 32423432
```

Per usarlo si puo' farlo in due modi o con il nuomero direttamente

```
$ ./sendsms 032329 "Messaggio da spedire"
```

oppure specificando il nome

```
$ ./sendsms -n zio "Messaggio da spedire"
```

Non faccio molti controlli quindi se avete problemi ditelo che cerchero' di mettere a posto

----------

## federico

Sentite trasformiamo la cosa all'italiana, ovvero qualcuno dalla svizzera fa da rimbalzo per gli sms anche per noialtri  :Smile:  Con tutte le volte che mi avete fermato alla dogana me lo dovete   :Laughing:   :Laughing: 

----------

## fedeliallalinea

 *federico wrote:*   

>  Con tutte le volte che mi avete fermato alla dogana me lo dovete   

 

E non sei mai venuto a trovarmi?

----------

## clem

 *fedeliallalinea wrote:*   

> 
> 
> Ehheheh mi fa piacere vederti anche qui 

 

Leggi tra le righe: "finalmente hai imparato ad usare il forum, così non devi più venire qua ogni due giorni col computer da riparare"   :Laughing:   :Laughing:   :Laughing: 

----------

## fedeliallalinea

 *clem wrote:*   

> "finalmente hai imparato ad usare il forum, così non devi più venire qua ogni due giorni col computer da riparare"    

 

Naaa... questo lo sai che non e' vero sei sempre il benvenuto  :Very Happy: 

----------

## clem

 *fedeliallalinea wrote:*   

> 
> 
> Naaa... questo lo sai che non e' vero sei sempre il benvenuto 

 

sì, è vero, stavo scherzando! Oggi pome posso venire a installare il wireless? eheh!   :Smile: 

...no, le palle, 'sto pome devo fare sisop!  :Shocked:  vabbe'..

----------

## federico

 *fedeliallalinea wrote:*   

>  *federico wrote:*    Con tutte le volte che mi avete fermato alla dogana me lo dovete    
> 
> E non sei mai venuto a trovarmi?

 

In che citta' abiti ?

----------

## fedeliallalinea

 *federico wrote:*   

> In che citta' abiti ?

 

Paesotto vorrai dire. Comunque quando passi mi fai un fischio e mi dici dovbe arrivare  :Razz: 

----------

## lopio

 *hellraiser wrote:*   

> per i clienti Vodafone è possibile usare smssens per mandare fino a 100 sms gratis [max 360 caratteri x sms]
> 
> se qualke problema chiedete pure...
> 
> addios

 

ciao scusa se approfitto  della tua gentilezza ma prima di fare inutili esperimenti vorrei alcun info.

Il servizio vale solo verso i cellulari vodafone vero?

Possibile che in italia non ci sia una maniera  furba per sfruttare le caselle di posta che permettono invio sms?

grazie ciao

----------

## randomaze

 *lopio wrote:*   

> ciao scusa se approfitto  della tua gentilezza ma prima di fare inutili esperimenti vorrei alcun info.
> 
> Il servizio vale solo verso i cellulari vodafone vero?

 

A giudicare dalle info che danno su 190.it si:

 *Quote:*   

> Questo servizio ti permette di inviare Brevi Messaggi di Testo (SMS) ad un telefono cellulare Vodafone direttamente dalla tua casella E-mail, il cui indirizzo hai inserito in fase di registrazione.

 

----------

## Jecko_Hee

Ciao, ho fatto una qualche modifica allo script di fedeli per poterlo eseguire su un server della mia scuola (B alla Supsi), sul quale non ci sono msmtp e nail, ma c'è mail.

ecco lo script

```

#!/usr/local/bin/bash

AGENDA="/path/to/file"

SEVICE_SMS='sms.switch.ch'

function usage {

    echo "Usage: sendsms <telephone number> <\"message\">"

    echo "Note: use \n for new line"

    exit 1

}

function getNumber {

    NUMBER=`cat ${AGENDA} | grep ${1} | sort | head -n 1 | awk '{print $2}'`

}

function getName {

    NAME=`cat ${AGENDA} | grep ${1} | sort | head -n 1 | awk '{print $1}'`

}

function sendsms {

    # calcola la lunghezza dell'account mail

    FROM_LENG=$[`whoami | wc -m`+`uname -n | wc -m`-1]    

    # lunghezza del messaggio sms

    SMS_LENG=`echo -e $2 | wc -c`

    let TOT_LENG=SMS_LENG+FROM_LENG

    SMS=`echo -e $2`

    # fintanto che il messaggio e' piu' lungo di 160

    # char fai il loop

    while [ $TOT_LENG -gt 160 ]

    do

      # lunghezza massima del sms

      let LENG=160-FROM_LENG

      #echo "`echo -e ${SMS} | head -c ${LENG}`"

      # spedisci i primi LENG caratteri per sms

      echo "`echo -e ${SMS} | head -c ${LENG}`" | mail ${1}@${SEVICE_SMS}

      # setta la nuova lunghezza del sms e il nuovo contenuto

      let SMS_LENG=SMS_LENG-LENG

      SMS=`echo ${SMS} | tail -c ${SMS_LENG}`

      let TOT_LENG=SMS_LENG+FROM_LENG

    done

    #echo -e "${SMS}"

    echo -e "${SMS}" | mail ${1}@${SEVICE_SMS}

}

case $1 in

    -n|--name)

        [ -z "$3" ] && usage

        getNumber $2

        getName ${NUMBER}

        if [ ! "${NAME}" = "$2" ]

        then

            echo "Non c'e' nessun contatto $2!"

            exit

        fi

        sendsms ${NUMBER} "$3" ;;

    -h|--help)

        usage ;;

    *)

        [ -z "$2" ] && usage

        sendsms $1 "$2" ;;

esac

exit 0

```

----------

## nomadsoul

see... ce la vedete la TELECOM che regala i messaggini gratis agli iscritti all'università??

----------

## oRDeX

Dreaming swizerland...

----------

## federico

 *oRDeX wrote:*   

> Dreaming swizerland...

 

Da noi c'e' la vodafone che lo fa per i loro clienti, non molto di + ...

----------

## koma

il problema principale è che per mandare un fottutissimo sms da vodafone ti fai:

- 10 minut di login

- 10 minuti  di attesa con 500 popup

- 10 minuti di naviazione tra i link

- 10 minuti a scoprire quale dei popap se si è aggiornato ti permette di amndare sms

- 30 secondi + 10 minuti per capire che devi cambiare popup perchè hai preso quello degli mms

- 10 minuti di attesa che il messaggio venga accodato

- 10 minuti di attesa prima che il popap SE si aggiorna ti dica che tutto è andato bene/male

----------

## federico

 *koma wrote:*   

> il problema principale è che per mandare un fottutissimo sms da vodafone ti fai:
> 
> - 10 minut di login
> 
> - 10 minuti  di attesa con 500 popup
> ...

 

Ma mica si poteva mandare la mail a numero@ominitel.it o qualcosa del genere? Quando ero loro abbonato lo facevo di solito...

----------

## koma

nn ero a conoscenza di ciò.. ma nn è che il ricevente paga?

----------

## fedeliallalinea

 *koma wrote:*   

> nn ero a conoscenza di ciò.. ma nn è che il ricevente paga?

 

Ora non so come funziona in italia ma se cosi' fosse a chi non mi sta troppo simpatico spedirei una merea di messaggi per fargli pagare una fattura stratosferica??? No il discorso non regge

----------

## federico

Ma no che non paga, koma ne avevamo parlato in canale anche  :Smile: 

Ora piu' che altro non so se funziona ancora questo sistema perche' chiaramente c'era qualcuno (ehM.. bhe per prova) che in questo modo mandava migliaia di sms a raffica verso qualche numero antipatico  :Smile: 

----------

## fedeliallalinea

Aggiunto ai post utilissimi sezione tips

----------

## rota

altavista ti permette di inviare sms ..anche libero....

----------

## rota

pero visto che ne sitamo parlando ... io vorrei solo cosi tanto per parlarne ... vorrei sapere come si monta un server che manda sms ...non so se e chiaro quello che sto chiedendo....

lo sto chiedendo cosi tanto per imparare  qualcosa di nuovo e se l'ideea mi piace forse la propongo all capo .....  :Rolling Eyes:   :Rolling Eyes:   :Rolling Eyes:   :Rolling Eyes: 

----------

## fedeliallalinea

Dovresti avere un modulo che permetta di spedire e inviare sms dove ci metti la tua carta e poi una volta fatto questo puoi farlo. La scuola per un progetto ce ne ha dato uno

----------

## rota

a e quanto mi viene a cosare una cosa dell genere ?????

pero non sono stato chiaro io voglio fare una cosa dell genere che fanno su altavista lbeto ecc 

sicuro che basta fare come dici tu ????? non mi e chiaro quello che ai detto ..

piu informazzioni mi farebbero comodo ...che modulo devvo usare ????  :Rolling Eyes:   :Rolling Eyes: 

----------

## fedeliallalinea

Tipo questo http://www.lextronic.fr/fela/descrip.htm poi ti manca ancora la parte per farlo comunicare via seriale con il pc

----------

## rota

e scometto che tu sai come fare ???/  :Cool:   :Cool:   :Cool:  me lo dici ...  :Rolling Eyes:   :Rolling Eyes:   :Rolling Eyes:   :Laughing: 

----------

## fedeliallalinea

 *rota wrote:*   

> e scometto che tu sai come fare ???/    me lo dici ...    

 

No per intanto sono riuscito a ricever un sms con quel aggeggio

----------

## rota

ok poi domani faccio una capatina su gogle ...

pero dimmi una cosa ....

se io volessi mettere nell mio sito la possibilita di inviare sms ecc...mi basta quello che mi ai detto tu   :Question:   :Question:  oppue no  :Question:   :Question: 

e poi devvo pagare qualcosa per un servizzio di questa portaa ????

no perche io una volta sapevo che per mettere una cosa del genere su un sito ti chieddevano un sacco di soldi ecc...  :Crying or Very sad:   :Crying or Very sad: 

----------

## fedeliallalinea

 *rota wrote:*   

> se io volessi mettere nell mio sito la possibilita di inviare sms ecc...mi basta quello che mi ai detto tu    oppue no   

 

Si in quel modulo ci devi mettere la tu sim quindi pagheresti tu come un contratto normale

----------

## rota

ok quello lo avevvo capito....percio sto tipo di servizzio ... potrei usarlo per mandare sms ai miei clienti ecc....be pero a me che me torna.....

invece se lo metto sull sito sto servizzio posso far pagare un tott per ogni sms ...se puo fare ????

ma se metto la mia scheda come e possibile che io possa ofrire a tutti di spedire sms dall mio sito ??????

----------

## Guglie

al politecnico di zurigo hanno reso obbligatorio l'uso di TLS nelle connessioni al mail server: posto le modifiche che ho dovuto fare al file ~/.msmtprc:

```
account default

host mail.ethz.ch

from $nome_utente@student.ethz.ch

auth on

tls on

tls_starttls

user $nome_utente

password $password_utente
```

inoltre ho modificato leggermente lo script di fedeliallalinea: ho migliorato un po' la rubrica e ho aggiunto la possibilitÃ  di mandare un messaggio anche a piÃ¹ persone, con sendsms -n "messaggio " persona_1,persona_2,...,pesona_n

```
#!/bin/bash

# file: sendsms.sh

# author: fedeliallalinea (forums.gentoo.org)

# date: october 2006

ADRESS_BOOK="/etc/sms_agenda"

SEVICE_SMS='sms.switch.ch'

SMS_LENGTH=160

function print_usage

{

   echo "Usage:"

   echo "   $(basename ${0}) <\"message\"> <telephone_number_1>,[telephone_number_2],..."

   echo "   $(basename ${0}) -n <\"message\"> <name_1>,[name_2],..."

   echo

   echo "Options:"

   echo "   -h | --help   print this help"

   echo "   -l | --list   print the adress book"

   echo

   echo "Note: use \n for new line"

   echo

   exit 1

}

function print_adress_list

{

   echo "Adress book:"

   cat ${ADRESS_BOOK} | sort | while read line; do

      name=$(echo $line | head -n 1 | awk '{print $1}')

      number=$(echo $line | awk '{print $2}')

      echo -e "  - $name\t$number"

   done

   exit 0

}

function get_number

{

   echo $(cat ${ADRESS_BOOK} | grep $1 | sort | head -n 1 | awk '{print $2}')

}

function parse_names

{

   # cerca per ogni nome il numero corrispondente nella rubrica

   names=$(echo "$1" | sed 's/,/\ /g')

   for i in $names; do

      if [ ! -z "$LIST_NUMBERS" ]; then

         LIST_NUMBERS=$LIST_NUMBERS,

      fi

      temp_num=$(get_number $i)

      if [ ! -z "$temp_num" ]; then

         LIST_NUMBERS=$LIST_NUMBERS$temp_num

      else

         echo "The contact \"$i\" is no available in the adress book"

         exit 1

      fi

   done

}

function sendsms

{

   message=$1

   numbers=$2

   # calcola la lunghezza del account mail

   FROM_LENG=`cat ~/.msmtprc | grep from | awk '{print $2}' | wc -c`

   # lunghezza del messaggio sms

   SMS_LENG=`echo -e $message | wc -c`

   let TOT_LENG=SMS_LENG+FROM_LENG

   SMS=`echo -e $message`

   # fintanto che il messaggio e' piu' lungo di 160

   # char fai il loop

   while [ $TOT_LENG -gt ${SMS_LENGTH} ]

   do

      # lunghezza massima del sms

      let LENG=${SMS_LENGTH}-FROM_LENG

      #echo "`echo -e ${SMS} | head -c ${LENG}`"

      # spedisci i primi LENG caratteri per sms

      echo "`echo -e ${SMS} | head -c ${LENG}`" |nail -s " " $numbers@${SEVICE_SMS}

      # setta la nuova lunghezza del sms e il nuovo contenuto

      let SMS_LENG=SMS_LENG-LENG

      SMS=`echo ${SMS} | tail -c ${SMS_LENG}`

      let TOT_LENG=SMS_LENG+FROM_LENG

   done

   #echo -e "SMS: ${SMS}"

   #echo ${numbers}@${SEVICE_SMS}

   echo -e "${SMS}" | nail -s " " $numbers@${SEVICE_SMS}

}

case $1 in

   -n|--name)

      [ -z "$3" ] && print_usage

      parse_names $3

      sendsms "$2" ${LIST_NUMBERS} ;;

   -l|--list)

      print_adress_list ;;

   -h|--help)

      print_usage ;;

   *)

      [ -z "$2" ] && print_usage

      sendsms "$1" $2 ;;

esac

exit 0
```

----------

