# [tool] sms da linea di comando per alice e tin

## stuart

bazzicando per i newsgroup ho trovato questo programmino per mandare sms da linea di comando per chi ha un abbonamento alice o tin (visto che ci sono 10 sms gratis al giorno per gli utenti delle adsl in questione)

è molto comodo, fate il conto che io non ne inviavo mai (pigrizia, non avevo voglia di andare sul sito ecc), ora basta aprire una shell

ho chiesto il permesso all'autore per postarlo sul forum e visto che era contento ecco la home page dove potrete scaricarlo e provarlo:

http://www.marzocca.net/linux/alicetinsms.html

----------

## [hammerfall]

 :Very Happy:   bello! stasera lo provo ^_^

----------

## ProT-0-TypE

ufff non mi funziona :'(

Errore restituito:

```
$ alicesms 34* ******* 'prova'

Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/site_perl/5.8.5/i686-linux /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.4/i686-linux /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i686-linux /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.4/i686-linux /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.5/i686-linux /usr/lib/perl5/5.8.5 /usr/local/lib/site_perl /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.4/i686-linux .) at /usr/bin/alicesms line 40.

BEGIN failed--compilation aborted at /usr/bin/alicesms line 40.

```

----------

## tocas

 *ProT-0-TypE wrote:*   

> ufff non mi funziona :'(
> 
> Errore restituito:
> 
> ```
> ...

 

Ti mancano i moduli del pacchetto libwww-perl, lo trovi anche in portage.

```
# emerge -s libwww-perl

Searching...

[ Results for search key : libwww-perl ]

[ Applications found : 1 ]

*  dev-perl/libwww-perl

      Latest version available: 5.79

      Latest version installed: 5.79

      Size of downloaded files: 219 kB

      Homepage:    http://cpan.org/modules/by-module/WWW/libwww-perl-5.79.readme

      Description: A collection of Perl Modules for the WWW

      License:     || ( Artistic GPL-2 )

```

Oppure puoi scaricarlo direttamente da cpan.org e seguire la procedura standard di installazione dei moduli perl.

Antonio

----

----------

## socrat3

Ma esiste uno script per l'invio dal servizio gratuito vodafone?

thx

cmq il programma e' ottimo

----------

## ProT-0-TypE

 *tocas wrote:*   

> 
> 
> Ti mancano i moduli del pacchetto libwww-perl, lo trovi anche in portage.
> 
> 

 

Ora funziona thank you!

----------

## Crema83

 *socrat3 wrote:*   

> Ma esiste uno script per l'invio dal servizio gratuito vodafone?
> 
> thx
> 
> cmq il programma e' ottimo

 

Anche io sto cercando uno script del genere... Un mio amico l'aveva creato xò ora è in ferie   :Wink:   !!! 

Appena torna me lo faccio passare...

----------

## Tiro

veramente interessante! ..stò già emergiando libperl!  :Smile: 

grazie mille per la segnalazione !

----------

## Tiro

perfetto!  :Smile: 

----------

## Crema83

Veramente grandioso...

Ora provo a fare qlc per lo script x vodafone ... se nel frattempo qualcuno rimedia qlc posti pure !!!   

 :Cool: 

----------

## silverfix

davvero praticissimo!

solo una cosa, qualcuno sa come modificare lo script per omettere il +39 davanti al numero ?

----------

## neon

 *Crema83 wrote:*   

>  *socrat3 wrote:*   Ma esiste uno script per l'invio dal servizio gratuito vodafone?
> 
> thx
> 
> cmq il programma e' ottimo 
> ...

 

https://forums.gentoo.org/viewtopic.php?p=1769701#1769701

----------

## Tiro

 *Quote:*   

> 
> 
> solo una cosa, qualcuno sa come modificare lo script per omettere il +39 davanti al numero ?

 

io ho risolto così:

```
$number = $ARGV[0];

$text = $ARGV[1];

$pre = "+39";

$number = $pre.$number;

```

----------

## Tiro

anche se riconosco che è una soluzione molto limitata...  :Wink: 

----------

## Crema83

 *Tiro wrote:*   

> 
> 
> io ho risolto così:
> 
> ```
> ...

 

Sicuro che ti vada??? Scusa ma il prefisso +39 non va anteposto a $prefix ???

----------

## Tiro

provare per credere...  :Wink: 

----------

## GhePeU

modifica per modifica, io ho aggiunto questa condizione

```
if (length($text) > 142) {

  print STDERR "Testo troppo lungo! rimuovere ", length($text) - 142, " caratteri", "\n";

  exit 1;

}
```

che segnala quando si mandano sms troppo lunghi (nel mio caso max 142 caratteri), altrimenti partivano lo stesso e arrivavano troncati

il mio numero massimo risulterebbe 160 - (lunghezza dell'indirizzo email + 3), se è così per tutti e non è invece fisso a 142 caratteri (ovviamente non ho altri indirizzi tin.it a pagamento per verificare  :Wink: ) ci vuol poco a generalizzare la cosa

----------

## Dece

funziona perfettamente  :Smile: 

e io che non sapevo neanche di avere sms gratis....   :Rolling Eyes: 

----------

## Crema83

 *GhePeU wrote:*   

> modifica per modifica, io ho aggiunto questa condizione
> 
> ```
> if (length($text) > 142) {
> 
> ...

 

Quoto in pieno... il numero max di caratteri = 160 - (lunghezza dell'indirizzo email + 3) !!!

Anche da me è così !!!!!!!!    :Cool: 

----------

## GhePeU

```

--- tinsms      2005-01-02 20:18:03.638265368 +0100

+++ tinsms      2005-01-02 20:22:22.113971088 +0100

@@ -25,6 +25,11 @@

 # inserita compatibilita' debian woody-sarge-sid

 #

 #

+# v.1.2.1b (forums.gentoo.org) - 02 gennaio 2004

+# inseriti prefisso +39 automatico e controllo sulla lunghezza

+# massima del messaggio

+#

+#

 #Please change $userid and $password variables with your data!

 #

 # -----------------------------------------------------------------

@@ -32,7 +37,7 @@

 $userid='...........@tin.it'; #<---------modificare!!! es: 'mario@tin.it'

 $password='...........'; #<-----------modificare!!!

-$version = '1.2.1';

+$version = '1.2.1b';

 $ua=""; #the browser

 $res="";

 $LogOff = "http://communicator.virgilio.it/AAA/sign_out.htm";

@@ -40,6 +45,7 @@

 $NOTOK= 0;

 $number ="";

 $text = "";

+$maxtext ="";

 use LWP::UserAgent;

@@ -51,12 +57,15 @@

 $usage = 'tinsms v. '.$version.'

 uso: tinsms numero \'messaggio da inviare\'

-NOTA: il numero deve essere comprensivo di prefisso internazionale.

-Esempio: tinsms +3934011111111 \'Arrivo fra 10 minuti.\'

+NOTA: il numero deve essere comprensivo di prefisso.

+Esempio: tinsms 34011111111 \'Arrivo fra 10 minuti.\'

 ';

 $number = $ARGV[0];

 $text = $ARGV[1];

+$pre = "+39";

+$number = $pre.$number;

+$maxtext = 160 - (length($userid) + 3);

 if (@ARGV < 2) {

@@ -64,6 +73,11 @@

   exit 1;

 }

+if (length($text) > $maxtext) {

+  print STDERR "Testo troppo lungo! rimuovere ", length($text) - $maxtext, " caratteri", "\n";

+  exit 1;

+}

+

 &Authenticate();

 if (&InviaSMS() == $NOTOK)

    { print "Messaggio non inviato...\n"; }

```

----------

## Tiro

 *Quote:*   

> 
> 
> che segnala quando si mandano sms troppo lunghi (nel mio caso max 142 caratteri), altrimenti partivano lo stesso e arrivavano troncati 

 

sms + indirizzo mail (troncato)

sms (troncato) + indirizzo mail

 :Question: 

----------

## GhePeU

testo troncato al X carattere + spazio + indirizzo email completo

----------

## Dece

Ma dato che i messaggi sono gratuiti, perchè non splittare un testo troppo lungo in più sms?   :Wink: 

Premetto una cosa: io non conosco per niente il perl, ho solo guardato un attimo il man e aggiunto due righe di codice, se ho scritto qualche cavolata chiedo scusa in anticipo:

```
$prefix = "+39";

$number = $prefix.$ARGV[0];

$text = $ARGV[1];

$len = length($text);

$maxtext = 160 - (length($userid) + 3);

if (@ARGV < 2) {

  print STDERR $usage, "\n";

  exit 1;

}

&Authenticate();

while ( $len > 0 ) {

  if (&InviaSMS() == $NOTOK) {

    print "Messaggio non inviato...\n";

    $len=0;

  }

  else {

    print "Messaggio inviato con successo!\n"; 

    if ( $len > $maxtext ) {

      $len -= $maxtext;

      $s = substr($text,$maxtext,$len);

      $text = $s;

    }

    else {

      $len=0;

    }

  }

}

$ua->get($LogOff);
```

Da me ha funzionato, solo che il secondo messaggio mi è arrivato dopo mezzora... forse bisogna inserire nel ciclo anche &Authenticate() e l'ultima riga...

----------

## shev

Ovviamente state mandando le vostre patch all'autore originale, giusto? Così ci guadagna tutta la comunità  :Wink: 

p.s.: utilissimo questo programmino, nemmeno sapevo di avere sms gratuiti con la mia adsl. Ora ho il programmino su ogni pc e risparmio un po' di centesimi al giorno, funziona benissimo  :Very Happy: 

----------

## stuart

 *shev wrote:*   

> Ovviamente state mandando le vostre patch all'autore originale, giusto? Così ci guadagna tutta la comunità 
> 
> 

 

non appena ho postato il messaggio gli ho mandato il link del thread via email

----------

## =DvD=

L'ho messo anche io.

Adesso finisco i messaggi, giusto perchè è quasi mezzanotte!

Karma all'autore!

----------

## gaffiere

ficoso  :Smile: 

complimenti all'autore originale e agli autori delle patch.

see ya

----------

## GhePeU

 *shev wrote:*   

> Ovviamente state mandando le vostre patch all'autore originale, giusto? Così ci guadagna tutta la comunità 
> 
> 

 

certo, prima però volevo dare un'occhiata per vedere se si riescono ad aggiungere

* controllo del numero dei messaggi ancora disponibili

* split opzionale in più messaggi quando ci sono troppi caratteri

è che di perl ne so poco (meglio dire nulla), però nei prossimi giorni dovrei avere un po' di tempo a disposizione

----------

## Dece

 *shev wrote:*   

> Ovviamente state mandando le vostre patch all'autore originale, giusto? Così ci guadagna tutta la comunità 
> 
> 

 

Ehm.... a dire il vero no....   :Rolling Eyes:   per ora

però, se mi dite che lo split funziona, è ovvio che sarà messo a disposizione  :Smile: 

come ho detto qualche post sopra, l'unico problema è che il secondo messaggio arriva più tardi, però mi sono accorto che nel cellulare segnano entrambi la stessa ora di arrivo, quindi è anche probabile che sia un fatto dovuto al server: magari fate una prova e postate qui se il comportamento è lo stesso oppure no  :Wink: 

----------

## Crema83

Ragazzi per chi fosse interessato all'avvio di sms tramite www.190.it e non se ne fosse ancora accorto, c'è un nuovo Topic nel forum:

https://forums.gentoo.org/viewtopic.php?t=273861

 :Cool: 

----------

## Tiro

oltre ad iscriversi al sito cosa si deve fare..? bisogna avere un qlc contratto di telefonia con loro o altro? ti fanno inviare sms gratis..?

----------

## Josuke

mm questa storia degli sms da riga di comando inizia a piacermi..per caso qualcuno sa se esiste qualcosa anche per tiscali? La cosa non sarebbe niente male...soprattutto per me che a scrivere gli sms da cellulare sono un pigrone immondo

----------

## ProT-0-TypE

ho notato che con alicesms manca la possibilità di visualizzare come mittente il proprio numero di casa (dal sito di alice si può fare). Ho mandato un'email all'autore dello script sperando che aggiunga tale possibilità.. ma se qualcuno di voi facesse prima..  :Very Happy: 

----------

## mrfree

Ottimo script, non è che qualcuno ha già provato a realizzare una versione che funzioni con il sito www.tim.it (che permette ai possessori di schede tim di inviare 10 sms gratuiti al giorno)?

----------

## Taglia

Ottimo tool   :Smile: 

----------

## stuart

dall'autore del programma al quale avevo mandato un email segnalando il link della discussione:

```

Daniele,

ho dato un'occhiata ai post sul forum di gentoo. 

Non mi iscrivo al forum perchè ho già troppe iscrizioni e non riesco a

seguirle tutte...

Volevo però fare solo un paio di commenti, che gentilmente potrai

riportare tu sul forum stesso:

1) Circa l'opportunità di omettere il codice internazionale +39

all'inizio, la vedo come una limitazione. Il servizio consente di

inviare anche SMS all'estero (personalmente l'ho usato). Ovviamente

questo vale solo per TINSMS e non per ALICESMS.

2) Interessante la possibilità di inviare messaggi più lunghi. Non mi

ero posto il problema in quanto l'uso che intendevo fare con i due

script è quello di inviare brevi sms automatici all'occorrenza di

particolari eventi nel server.

Comunque complimenti a tutti!

Ciao

Saltydog

PS: Potete usare liberamente questo indirizzo email per ogni necessità.

thesaltydog@gmail.com

```

----------

## Crema83

 *Tiro wrote:*   

> oltre ad iscriversi al sito cosa si deve fare..? bisogna avere un qlc contratto di telefonia con loro o altro? ti fanno inviare sms gratis..?

 

Beh devi avere un numero Vodafone per poterti iscrivere al servizio...

----------

## silverfix

sarebbe utilissimo anche implementare una sorta di contatore degli sms rimasti, tipo qualcosa che nel programma dica, ogni quando si ha responso positivo nel server conta all'esecuzione del prog -1, senza mettere in mezzo il server   :Wink:  anche se poi si avrebbe una limitazione, all'invio di un sms direttamente dal browser per esempio, il prog non se ne accorgerebbe...

l'avrei fatto io, peccato non ne sappia niente di perl  :Smile: 

complimenti a tutti per l'ottimo lavoro.

----------

## Tiro

 *Quote:*   

> Tiro ha scritto:
> 
> oltre ad iscriversi al sito cosa si deve fare..? bisogna avere un qlc contratto di telefonia con loro o altro? ti fanno inviare sms gratis..?
> 
> Beh devi avere un numero Vodafone per poterti iscrivere al servizio...

 

era infatti ciò che temevo...

----------

## Crema83

 *Tiro wrote:*   

> era infatti ciò che temevo...

 

 :Wink: 

Beh però se non sbaglio presumo che anche la Tim offra queso servizio di messaggistica gratuita su IP ... prova ad informarti !!!

----------

## Josuke

mmm e wind niente?

----------

## federico

Ma i messaggi inviati con questo sistema vengono loggati sul sito?

----------

## gaffiere

 *federico wrote:*   

> Ma i messaggi inviati con questo sistema vengono loggati sul sito?

 

appena controllato: si sono lì anche loro nell'archivio di tin.

see ya

----------

## Crema83

 *Josuke wrote:*   

> mmm e wind niente?

 

Io sul sito di smssend (http://zekiller.skytech.org/smssend_menu_en.html)  ho trovato questo script:

Script for www.inwind.it version 0.02 (updated 2003-01-01) by Massy

        Script working for countries : IT - Download

Prova a vedere se può andarti bene...

----------

## stuart

c'è una nuova versione di alicesms e tinsms

dall'email dell'autore::

```

Daniele,

ho messo online la nuova versione 1.3.0 di tinsms. Questo

aggiornamento tiene conto dei suggerimenti del forum gentoo (infatti

l'ho citato nell'history list).

Le novità:

1) si può omettere il prefisso internazionale. Se omesso, il programma

considera per deafult +39 (italia). Se serve inviare un sms

internazionale, occorre specificare il corretto prefisso (es: +44

etc..) Questo per non limitare l'uso di tinsms al solo territorio

nazionale.

2) C'è un warning se il messaggio supera la lunghezza consentita. Non

ho inserito lo "split" su più messaggi perchè ritengo che sia meglio

che l'utente "scelga" di inviare due o più sms, piuttosto che - magari

per un solo carattere - gli partano 2 sms. In pratica, la funzione di

"split" ha bisogno di un feedback in tempo reale, mentre si scrive, ed

è più adatta per una versione con GUI.

Ciao

```

----------

## federico

Cavoli io non voglio che rimanga loggato   :Sad: 

----------

## mrfree

Ci riprovo... ma per tim.it niente?   :Smile: 

Edit: ops, mi rispondo da solo http://digilander.libero.it/bash/timsms/

----------

## silverfix

ottima la nuova versione, però si potrebbe contattare l'autore per implementare anche il conteggio degli sms rimasti.

bye

----------

## silverfix

per chi non lo sapesse, oggi è uscita la versione tinsms 1.3.5 che

in uscita ti informa dei messaggi inviati il tutto sincronizzato con il

server!

 :Very Happy: 

----------

## ProT-0-TypE

ma con alice sms non c'è ancora la possibilità di mandare sms col tuo numero di casa. ufff :'(

----------

## federico

 *ProT-0-TypE wrote:*   

> ma con alice sms non c'è ancora la possibilità di mandare sms col tuo numero di casa. ufff :'(

 

Mi sa che sei uno dei 10 italiani che usa questa opzione  :Smile: 

----------

## ProT-0-TypE

speriamo che anche gli altri 9 si facciano sentire  :Very Happy: 

Comunque è utilissima, almeno evito di firmarmi  :Razz: 

----------

## Tiro

cmq attenzione ad inviare sms "abbastanza" importanti perchè NON tutti gli sms arrivano...

----------

## Mr.Evolution

 *socrat3 wrote:*   

> Ma esiste uno script per l'invio dal servizio gratuito vodafone?
> 
> thx
> 
> cmq il programma e' ottimo

 

Esiste un servizio parallelo per la vodafone che pochi sanno: inviano una mail a n.tel@sms.vodafone.it

un sms verrà recapitato sul cell. indicato....La casella da cui inviare deve essere registrata nel 190....

----------

## unarana

mi da un errore:

```

unarana@CraaK ~ $ alicesms 320 xxxxxxx 'popu iuoi uoiyfh fyutryt rytrytrytr' Can't call method "value" on an undefined value at /usr/bin/alicesms line 138.
```

 :Question:   :Question: 

Ciao   :Mr. Green: 

----------

## fctk

mi da lo stesso errore anche a me.

sembra quasi che a volte vada e a volte no questo script (anche se non credo proprio sia colpa sua)...

----------

## xoen

Sembra interessante, magari provo...sarebbe interessante avere una sorta di modalità interattiva...e magari una modalità grafica (Volendo si potrebbe trasformare in python  :Smile: )

Dubbi...

1) Cosa ne pensa Telecom? Sapete meglio di me come sono visti gli hacker che smanettano per avere le cose comode...come criminali  :Sad:  (Anche se non ci vedo nulla di male personalmente, ovvio!)

2) Ho notato che esistono diversi siti che offrono questo tipo di servizio...penso anche all'estero, non sarebbe più interessante qualcosa di generale (da impostare a modo in base al servizio da usare)? Magari con una bella interfaccia grafica? (GTK of course  :Cool:  )  [EDIT]Forse quell'smssend è un progetto che fa questo?[/EDIT]

----------

## gutter

 *xoen wrote:*   

> 
> 
> 1) Cosa ne pensa Telecom? Sapete meglio di me come sono visti gli hacker che smanettano per avere le cose comode...come criminali  (Anche se non ci vedo nulla di male personalmente, ovvio!)
> 
> 

 

Non credo possano dire assolutamente niente, dal momento che stai usando un servizio che loro forniscono in un modo "leggermente" diverso. Ma non hai fatto niente di illegale.

----------

## RockSteady

smssend non riconosce alcuni simboli

tipo !!! non inviera l'sms

----------

## ProT-0-TypE

 *RockSteady wrote:*   

> smssend non riconosce alcuni simboli
> 
> tipo !!! non inviera l'sms

 

Prova a racchiudere il testo del messaggio tra ' TESTO ' e non tra " TESTO "

----------

## redview

 *unarana wrote:*   

> mi da un errore:
> 
> ```
> 
> unarana@CraaK ~ $ alicesms 320 xxxxxxx 'popu iuoi uoiyfh fyutryt rytrytrytr' Can't call method "value" on an undefined value at /usr/bin/alicesms line 138.
> ...

 

ciao, questo errore l'ha dato anche a me qualche volta. Pensando che fosse un bug del programma sono andato sul sito di alice per inviare l'sms nel metodo classico accedendo con il mio id e psw. Risultato? Il sito di alice era down per quanto riguardava i servizi email/sms/cavolate varie. La pagina diceva chiaramente che c'erano dei problemi al server e che, per la fortuna di tutta l'utenza alice, andavano ancora i servizi per guardare il grande fratello e il calcio...pfff.  :Evil or Very Mad: 

e questo è successo tutte le volte che ho avuto quell'errore.

quindi nn credo sia un bug del programma ma un problema di alice.

saluti!

----------

## xoen

 *redview wrote:*   

> ciao, questo errore l'ha dato anche a me qualche volta. Pensando che fosse un bug del programma sono andato sul sito di alice per inviare l'sms nel metodo classico accedendo con il mio id e psw. Risultato? Il sito di alice era down per quanto riguardava i servizi email/sms/cavolate varie.

 

Questi hacker che usano script e bloccano il sistema  :Wink:   :Cool: 

PS: Ovviamente sto scherzando  :Smile: 

----------

## The_Angel_Of_Darkness

raga, a me funziona tutto a meraviglia, ma non c'è la possibilità invece di inserire i numeri, di magari associare un numero ad un nome così dando ad esempio alicesms nometizio 'testo' lo manda senza fare il numero. è possibile fare una cosa del genere?

----------

## Ciccio Bueo

ummm non mi và... mi dice che la pw è sbagliata... ma dal servizion on-line tutto funziona..

ricapitolando: ho alice adsl e ho scaricato lo script alicesms

ho scompattato e spostato lo script in /usr/bin/

l'ho modificato con nano (l'user id va messo con o senza  @aliceposta.it?)  ho provato sia con sia senza... e non cambia nulla....

ho messo la pw, la stessa che uso per il servizio on-line

ho fatto root@tux bin # chmod a+x alicesms

e:

```
root@tux bin # alicesms 335 XXXXXX 'prova'

La password inserita non e' corretta... Prego verificare!
```

ma capitano solo a me sti skleri con le pw?  :Rolling Eyes: 

----------

## FonderiaDigitale

prefisso e numero senza spazi in mezzo

----------

## Ciccio Bueo

 *FonderiaDigitale wrote:*   

> prefisso e numero senza spazi in mezzo

 

no, alicesms va con gli spazi... 

comunque ho trovato l'errore... avevo copiato il file in /usr/sbin ma continuavo ad editare il file in /usr/bin... che pollo... ora funziona tutto... scusate!  :Embarassed: 

----------

## Ciccio Bueo

visto che mi sento "lanciato" vorrei realizzare un front-end per gnome per questo programmino... sapete indicarmi dove posso trovare della documentazione, preferibilmente in ita per realizzarlo? pensavo ad una applet per la barra di gnome.. dove inserisco il mess e lui lo lancia... vi va di aiutarmi?  :Very Happy: 

----------

## snake111

ciao a tutti, ho realizzato una modifica allo script per Tin.it in modo da poter utilizzare una rudimentale rubrica.

Posto tutto lo script, ditemi se è sufficientemente chiara la spiegazione inserita nello script su come usare la rubrica.

Se avete domande o suggerimenti dite pure  :Very Happy: 

I nominativi in rubrica potete inserirli anche disordinati, tanto a ogni esecuzione dello script la rubrica viene ordinata alfabeticamente e riscritta.

EDIT: Inserito il supporto per andare a capo con messaggi lunghi da linea di comando usando "\[INVIO]" es di messaggio:

```

'uno due tre quattro\[INVIO]

cinque sei sette'

```

alla fine della riga non va lasciato nessuno spazio, ne all'inizio di quella successiva, lo script li aggiunge in automatico quando ricompone il messaggio.

```

#!/usr/bin/perl -w

############################################################################

#    Copyright (C) 2004-2005 by Fabio Marzocca                             #

#    thesaltydog AT gmail.com                                                 #

#                                                                          #

#    This program is free software; you can redistribute it and#or modify  #

#    it under the terms of the GNU General Public License as published by  #

#    the Free Software Foundation; either version 2 of the License, or     #

#    (at your option) any later version.                                   #

#                                                                          #

#    This program is distributed in the hope that it will be useful,       #

#    but WITHOUT ANY WARRANTY; without even the implied warranty of        #

#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         #

#    GNU General Public License for more details.                          #

#                                                                          #

#    You should have received a copy of the GNU General Public License     #

#    along with this program; if not, write to the                         #

#    Free Software Foundation, Inc.,                                       #

#    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             #

############################################################################

# v. 0.2.0 - 31 agosto 2004

# 

#

# v. 0.2.1 - 28 novembre 2004

# migliorata la procedura di login

#

# v. 1.0.0 - 10 dicembre 2004

# abilitato cookie in memoria ram

#

# v. 1.1.0 - 20 dicembre 2004

# migliorate le routine di error-trapping 

#

#

# v. 1.1.1 - 23 dicembre 2004

# rimosso warning per input outside form

#

#

# v. 1.2.0 - 28 dicembre 2004

# eliminato bug da libhtml-parser-perl 3.43

#

# v.1.2.1 - 29 dicembre 2004

# inserita compatibilita' debian woody-sarge-sid

#

# v. 1.3.0 - 4 gen. 2005 (con la collaborazione di forums.gentoo.org)

# - GNU license

# - inserito +39 di default

# - controllo sulla lunghezza del testo

#

# v. 1.3.5 - 5 gen. 2005

# - meccanismo di autenticazione più 'furbo'!

# - aggiunta visualizzazione sms inviati

#

# v. 1.4.0 - 10 gen. 2005 (con la collaborazione di Sergio Giuffrida (takli)

# - implementata opzione per uso da pipe (file o stdin)

#

#

#Please change $userid and $password variables with your data!

#

# -----------------------------------------------------------------

my $userid='USER@tin.it'; #<---------modificare!!! es: 'mario@tin.it'

my $password='PASS'; #<-----------modificare!!!

my $version = '1.4.0';

my $res="";

my $LogOff = "http://communicator.virgilio.it/AAA/sign_out.htm";

my $OK = 1;

my $NOTOK= 0;

my $number ="";

my $text = "";

my $i= 1;

use LWP::UserAgent;

use LWP::Simple;

use HTML::Form;

my $usage = 'tinsms v. '.$version.'

uso #1: tinsms numero \'messaggio da inviare\'

 

NOTA: il numero puo\' essere comprensivo di prefisso internazionale.

      Se omesso, si intende per default +39 (Italia).

      

Esempio: tinsms 34011111111 \'Arrivo fra 10 minuti.\'

         tinsms +13019999999 \'I will be there in 10 minutes.\'

    

uso #2: tinsms -i < [FILE]|[STDIN]

   tinsms -i 3401111111 < [FILE]|[STDIN]

uso #3: tinsms nome_contatto \'messaggio da inviare\'

richiede un file chiamato "rubrica" nella stessa directory, composto come:

------inizio-------

#####-rubrica di pippo-#####

tizio    3280123456

caio     3400123456

pluto    3330123456

-------fine--------

IMPORTANTE: lasciare una linea vuota alla fine del file!

- è sconsigliato usare tabulazioni per indendare la rubrica.

';

##########################################################################################à

sub Authenticate()

{

$ua = LWP::UserAgent->new();

$ua->cookie_jar({});

$ua->agent('Mozilla/5.0');

$res = $ua->get("http://communicator.virgilio.it/asp/login.asp?pop_login=".$userid."&password=".$password."&js=1&status=DA_HOMEPAGE");

if (!($res->is_success)) {

print "tinsms: Non riesco ad accedere alla pagina di login!\n"; 

   exit(1);

   }

if ($res->content =~ /sign_in_errore/) {

   print "tinsms: Errore di login. Verifica userid e password!\n";

   exit(1);

   }

return $ua;

# ------------------------------------------------

}

sub InviaSMS()

{

$res = $ua->get('http://gsmailmd.umail.virgilio.it:8080/supermail/controller;?username='.$userid.'&action=showwelcomepage');

if (!($res->content =~ /recipient/)) { 

   print "tinsms: Non riesco ad accedere al modulo di invio!\n"; 

   return $NOTOK;

   }

   {

   local $^W = 0; #sopprimi i warning

   $form = HTML::Form->parse($res->content,$res->base);

   }

if (substr($number,0,1) ne '+')

   {

      $number = '+39'.$number;

   }

$form->value('recipient',$number);

$form->value('testo',$text);

$res = $ua->request($form->click);

if ($res->content =~ /Messaggio inviato/)  {

   return $OK;

   }

else { 

   return $NOTOK;

   }

}

sub show_n_msg

{

$res = $ua->get('http://gsmailmd.umail.virgilio.it:8080/supermail/controller?username='.$userid);

 

if ($res->content =~ /(SMS\sinviati\soggi\:\d+\/\d+)/) {

  print $userid.": $1 \n";

   }

}

sub parseCmdLine

{

if ((@ARGV == 0) || (@ARGV>2)) {

   print STDERR $usage, "\n";

        exit 1;

        }

if ($ARGV[0] eq "-i") {

   #input da STDIN  

   shift @ARGV; 

   $/=' ';

        @arr=<STDIN>;

        chomp @arr;

        if (@ARGV==1) {$number=$ARGV[0];} else {$number=shift @arr;}

        if (!($number =~/^[+-]?\d+$/)) {   

      #non è un numero!

      print STDERR $usage, "\n";

           exit 1;

           }

   $text=join ' ',@arr;

        chomp $text;

        $text=~s/\n/\ /g;

        $text=~s/\s+/\ /g;

        $/="\n";   

   return;

   }

#input da rubrica

if (! (($ARGV[0] =~/^3/) || ($ARGV[0] =~/^\+/) || ($ARGV[0] =~/^0/))) {  #se il numero non è rappresentato da cifre

   open(RU,"<rubrica");                        #apre il file "rubrica"

   @RUarr=readline(RU);                        #mette nell'array "FILE" tutte le linee di rubrica

   @RUarr=sort(@RUarr);                        #ordina l'array

   close RU;                                   #chiude il file rubrica

   open(R,">rubrica");                         #apre rubrica in scrittura

   print(R @RUarr);                            #riscrive la rubrica in ordine alfabetico

   close R;                                    #chiude il file

   @gr=grep(/$ARGV[0]/,@RUarr);                #cerca il nome contatto nell'array che contiene la rubrica

   if(!(grep(/$ARGV[0]/,@RUarr))){              #controllo se esiste il nome in rubrica

       print "nessun contatto trovato\n";

       exit 1;

   }

   @wor=split(/\s+/,$gr[0]);                   #"wor[0]" -> nome contatto, "wor[1]" -> n° contatto

   if(sprintf(@gr)>1){                         #visualizza tutto l'output della ricerca in rubrica

       print "-> ",$gr[0];

       while($gr[$i]){

      print "   ",$gr[$i];

      $i++;

       }

   }

   else{

       print $wor[0], " ",$wor[1];             #visualizza i dati del contatto se la ricerca è univoca

   }

   print "\n[INVIO] per inviare sms al contatto selezionato, qualsiasi altro tasto per uscire: ";

   $line=<STDIN>;

   if ($line =~ /^\n/){

       $number=$wor[1];

       @pr=split(/\\\n/,$ARGV[1]);             #spezza il messaggio eliminando gli eventuali a capo

       $text=join(' ', @pr);                   #ricompone il messaggio pulito da inviare

       return;

   }

   else {exit 1;}

 }

#input da linea di comando

$number = $ARGV[0];

$text = $ARGV[1];

if (!($number =~/^[+-]?\d+$/)) {   

   #non è un numero!

   print STDERR $usage, "\n";

        exit 1;

        }

   

return;   

}

####################################################################

#####################################################################

sub main

{

parseCmdLine();                                                                                

                                                                                                

my $maxtext = 160 - (length($userid) + 3); 

if (length($text) > $maxtext) {

  print STDERR "Testo troppo lungo! rimuovere ", length($text) - $maxtext, " caratteri\n";

  exit 1;

  }

$ua = Authenticate();

if (InviaSMS() == $NOTOK)

   { print "Messaggio non inviato...\n"; }

else

   { print "Messaggio inviato con successo!\n";}

show_n_msg;  

$ua->get($LogOff);

}

main();

```

Last edited by snake111 on Sun Feb 20, 2005 1:43 pm; edited 1 time in total

----------

## mouser

 *The_Angel_Of_Darkness wrote:*   

> 
> 
> raga, a me funziona tutto a meraviglia, ma non c'è la possibilità invece di inserire i numeri, di magari associare un numero ad un nome così dando ad esempio alicesms nometizio 'testo' lo manda senza fare il numero. è possibile fare una cosa del genere?
> 
> 

 

Per questo basta ricordarsi che lo script gira in shell, e quindi e' possibile gestire le variabili

```

$ set MioAmico="34xxxxxxxxxx"

$ alicesms $MioAmico 'testo'

```

Per comodita' butti tutti i set in un file e lo rendi eseguibile!

```

$ touch rubricaSms.sh

$ echo set MioAmico1="34xxxxxxxxx" >> rubricaSms.sh

$ echo set MioAmico2="33xxxxxxxxx" >> rubricaSms.sh

...

$ chmod +x rubricaSms.sh

```

E poi lo fai caricare all'avvio! Tutte le volte che devi aggiungere un numero in rubrica dai

```

$ echo set MioAmico3="33xxxxxxxx" >> rubricaSms.sh

```

e sei a posto  :Wink: 

@snake111:

Non ti voglio fare un'appunto, ma quando devi postare un script (o un'output, o qualsiasi cosa) che e' troppo lungo, ti conviene andarlo ad uploadare da qualche parte e postare il link! Questo per migliorare la leggibilita' del thread  :Wink: 

Ciriciao

mouser  :Wink: 

----------

## snake111

grazie seguirò il consiglio, è interessante anche la tua soluzione con le variabili, non ci avevo pensato! Anche se con la rubrica che ho messo si riesce anche a fare una pseudo-ricerca e ordinamento.

----------

## iDreamer

...ma con libero niente eh?

be se proprio nessuno sa se c'è qualcosa di pronto provo a farlo io..

chi fa da se fa per 3 ma se posso scrocca e meglio  :Smile:  anche perchè il perl non l'ho mai usato..

solo un cosiglio:

Libero per inviare gli sms ti devi loggare nell'email scegliere sms e inviare...

non so proprio come fare ma penso che tra alice e libero il metodo bene o male sarà lo stesso no?

----------

## iDreamer

ho incominciato a studiare lo script è ho trovato un problema...

nel 'url di libero c'è bisogno di passare nell'url anche il codice della sessione che cambia da login in login... mentre con lo script alice è standard..

come posso fare a prendere id è ad aggiungerlo all'url?

non so se mi avete capito,,,

----------

## ataraxic

Ciao a tutti!

Sapreste gentilmente indicarmi come modificare lo script per inserire all'interno del sms delle variabili???

Ovvero:

 *Quote:*   

> 
> 
> alicesms xxx xxxxxxx 'questi sono i miei path: $PATH'
> 
> 

 

Ho pensato che il testo del messaggio dovrebbe essere delimitato da "xxx" piuttosto che da 'xxx', ma non so come fare....

Grazie

----------

## ataraxic

Mi rispondo da solo...

Funziona anche con le doppie

 *Quote:*   

> 
> 
> alicesms xxx xxxxxxx "Funziona funziona...$PATH"
> 
> 

 

Sorry!!

----------

## snake111

 *iDreamer wrote:*   

> ho incominciato a studiare lo script è ho trovato un problema...
> 
> nel 'url di libero c'è bisogno di passare nell'url anche il codice della sessione che cambia da login in login... mentre con lo script alice è standard..
> 
> come posso fare a prendere id è ad aggiungerlo all'url?
> ...

 

dovresti fare una concatenazione di stringhe penso, c'è la funzione join in perl, guardati il manuale (man perlfunc)

----------

## Tiro

con le stesse user e pass accedo da web

```
# tinsms 348xxxxxx 'ok'

tinsms: Non riesco ad accedere alla pagina di login!

```

e questa  :Question: 

----------

## gaffiere

da qualche tempo sulla home di tin.it non bisogna specificare l'intero indirizzo 'posta@tin.it' ma il tutto è stato spezzato in due:

specifichi 'posta' e poi '@tin.it' che viene scelto da un menù a tendina.

presumo quindi che sia stata aggiunta una seconda variabile, la quale deve essere aggiunta anche nello script.

chi vuole cimentarsi? visto che ho tempo zero ;P

see ya

----------

## matttions

Ho fatto una modifica velocissima allo script in modo da avere la rubrica in qualunque punto e nn nella stessa directory [tengo lo script in 

```
/usr/bin/
```

 per averlo sempre a portata di mano .. la rubrica invece la tengo in home in modo tale da avere i permessi discrittura ed accodare i nomi ...]

dovete settarla dentro il file.

potete scaricarlo quÃ¬

http://guernica.unicam.it/~mattions/tinsms

Modificato anche l'altro per aliceadsl lo trovate quÃ 

http://guernica.unicam.it/~mattions/tinsms

 :Smile: 

----------

## thesaltydog

Per gli utenti del programma tinsms, ho recentemente messo online la versione GUI del programma. Si chiama gTinSMS e si può trovare qui: http://www.marzocca.net/linux/gtinsms.html

----------

## earcar

 *thesaltydog wrote:*   

> Per gli utenti del programma tinsms, ho recentemente messo online la versione GUI del programma. Si chiama gTinSMS e si può trovare qui: http://www.marzocca.net/linux/gtinsms.html

 

Grande!  :Very Happy: 

[tono_da_bambino_capriccioso]ebuild, ebuild, ebuild  :Very Happy:  [/tono_da_bambino_capriccioso]

EDIT: ops  :Embarassed:  non avevo letto che anche la gui è scritta in perl... però un ebuild con tutti e tre i programmi (magari gestibili tramite USE) non ci starebbe male...  :Wink: 

----------

## fctk

per prima cosa ringrazio l'autore di gtinsms,

poi... non è che per caso è possibile modificarlo un po' per ottenere una versione per alicesms?

----------

## thesaltydog

Lo sto scrivendo... lo finirò per il weekend.

Forse da domenica sarà online..

----------

## thesaltydog

...a seguire rispetto a gTinSMS, ho messo on line anche gAliceSMS per utenti RossoAlice.

http://www.marzocca.net/linux/galicesms.html

----------

## Crema83

Ho appena reinstallato Gentoo è il vecchio, famosissimo e comadissimo script di alicesms non mi va + ...

```
Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/site_perl/5.8.5/i686-linux /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i686-linux /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.5/i686-linux /usr/lib/perl5/5.8.5 /usr/local/lib/site_perl .) at /usr/bin/alicesms line 80.

BEGIN failed--compilation aborted at /usr/bin/alicesms line 80.
```

Qualche idea???

Grazie mille

----------

## redview

complimenti thesaltydog: mi sembra vada benissimo!!! :Very Happy: 

ora per la perferzione di alicesms si dovrebbe poter avere la possibilità di cattare file e inviarli..tipo l'opzione tinsms -i che ho visto sul sito.. :Confused: 

----------

## fctk

 *Crema83 wrote:*   

> Ho appena reinstallato Gentoo è il vecchio, famosissimo e comadissimo script di alicesms non mi va + ...
> 
> ```
> Can't locate LWP/UserAgent.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/site_perl/5.8.5/i686-linux /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.5/i686-linux /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.5/i686-linux /usr/lib/perl5/5.8.5 /usr/local/lib/site_perl .) at /usr/bin/alicesms line 80.
> 
> ...

 

se non sbaglio:

```
emerge libwww-perl
```

----------

## rota

betat ivoi che avete la posssiblità di inviare sms gratis col vostro provider..... :Crying or Very sad:   :Crying or Very sad: 

----------

## Crema83

 *fctk wrote:*   

> 
> 
> se non sbaglio:
> 
> ```
> ...

 

Perfetto ... Grazie mille   :Wink: 

----------

## Lucha

perchè coloro che hanno aggiunto la rubrica a tinsms non la modificano in modo che vada a leggersi la stessa rubrica di gtinsms (ovvero ~/.tinsms.db)??? A me pare molto più comodo usare la linea di comando, ma mi piace poter cambiare di tanto in tanto, quindi sarebbe carino se i due programmi usassero gli stessi file (mantenere due rubriche è una follia:P)!

L'avrei fatto io stesso ma non ho mai programato in Perl! L'unica cosa che sono stato capace di fare è far leggere a tinsms .tinsms.rc invece di dover impostare i parametri nello script (copiando la funzione da gtinsms), però cambiare le procedure che gestiscono le stringe è oltre la mia capacità!

Qualcuno ha voglia di farlo? matttions? snake111???

----------

## Tiro

gtinsms?? dagli screenshot sembra favoloso!!!  :Very Happy:   appena ritorno a casa lo scarico...o emergo(!?!?!?!?!?)  :Laughing: 

ottimo lavoro!  :Wink: 

----------

## Vurdak

Dannazione non va con virgilio  :Sad: 

----------

## saxtro

qualcuno sa se c'è una versione per gli sms di ibox tim.it via terminale senza accedere con il browser al servizio ?

----------

## Ciccio Bueo

sto usando da diverso tempo galicesms, e mi trovo benissimo, volevo sapere se qualcuno lo usa per ricevere un sms in caso di determinati eventi, in automatico..

cioè vorrei che leggesse dai log e quando trova una determinata stringa, mi manda un sms, è possibile?

----------

## matttions

E' l'autore stesso che spiega come fare

http://www.marzocca.net/linux/alicetinsms.html

 :Smile: 

----------

## Ciccio Bueo

si questo l'avevo già letto, (per quello mi è sorta la domanda),  ma non capisco come adattarlo al mio scopo...

in script sono una schiappa..

----------

## makami

a me da questo errore:

```

Can't locate Gtk2.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/site_perl/5.8.6/i686-linux /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.6/i686-linux /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.6/i686-linux /usr/lib/perl5/5.8.6 /usr/local/lib/site_perl .) at /usr/bin/gtinsms line 33.

BEGIN failed--compilation aborted at /usr/bin/gtinsms line 33.

```

ho libwww-per installate..  uso kde ma ho come use sia qt che gtk e gtk2, potrebbe centrare? (visto che nel messaggio d'errore compaiono ste gtk2..)

Ho reinstallato da poco gentoo.. prima funzionava  :Sad: 

----------

## federico

 *makami wrote:*   

> a me da questo errore:
> 
> ```
> 
> Can't locate Gtk2.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/site_perl/5.8.6/i686-linux /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.6/i686-linux /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.6/i686-linux /usr/lib/perl5/5.8.6 /usr/local/lib/site_perl .) at /usr/bin/gtinsms line 33.
> ...

 

E' un errore di perl relativo ai path di solito, non trova in particolare quel file, dovresti controllare se lo trovi in quelle dir li che indica lui oppure altre. Io di solito risolvo questo tipo di problema symlinkando, visto che non ho mica capisto come mai ogni volta che aggiorni perl o qualche sua dipendenza, si sputtana tutto..

----------

## makami

Gtk2.pm non esiste nel mio sistema -_-

----------

## federico

FORSE

* dev-perl/gtk-perl-glade 

     Available versions:  0.7004-r2 0.7004-r3 0.7008 0.7008-r1

     Installed:           none

     Homepage:            http://www.gtkperl.org/

     Description:         Perl bindings for GTK

è questo quello che ti serve

----------

## makami

L'ho installato adesso, insieme alle sue maledette 26 dipendenze   :Evil or Very Mad: 

Niente da fare, stesso identico errore..

uff è comodissimo questo programmino, sarebbe una scocciatura loggarmi ogni volta nel sito..

Adesso però devo eliminare questi 27 inutili pacchetti

Federico: grazie comunque per l'interessamento

----------

## luigi.malago

ottimo script, complimenti agli autori!

Luigi

----------

## u238

è una scheggia!!! grandissimi  :Wink: 

----------

## danielinux

Fino a ieri sera lo script fungeva, ma oggi mi da questo errore:

 *Quote:*   

> 
> 
> Can't call method "value" on an undefined value at /usr/bin/alicesms line 205.
> 
> 

 

Poi sono andato sul sito per mandare l'sms ed ho notato che la pagina era cambiata..

Qualcuno ha provato recentemente (da oggi) a mandare sms con lo script alicesms?

----------

## danielinux

Tutto ok. Ora lo script è stato corretto dall'autore.

Era dato proprio dal nuovo portale.

----------

## the_mk

salve a tutti

non so se l'avete notato (non ho letto le pagine del topic), ma esiste nel portage un applicativo "galicesms" che non 

è nient'altro che il front-end grafico dello script in questione.

Faccio notare qua (ma, veramente, non so a chi sia di dovere) che nell' .ebuid ora è accettata solamente la keyword x86,

ma il tutto funziona egregiamente anche su piattaforma amd64 (intel p4 3ghz em64t prescott)

----------

## the_mk

salve  a tutti

ho aggiornato gnome alle versione 2.14 e adesso quando avvio galicesms mi dà questo errore:

Can't locate object method "signal_connect" via package "Gtk2::Window" at /usr/bin/galicesms line 801.

avete qualche proposta? grazie

(piattaforma Intel x86_64)

----------

## Galanti Davide

Non capisco come mai da qualche giorno a questa parte alicesms non funzioni più:

```
galanti.davide@gentoo ~ $ alicesms xxx xxxxxxx 'test'

Il messaggio non e' stato inviato!!

Messaggi rimasti: 10
```

Ho notato che il portale di alice adesso è cambiato, almeno per quanto riguarda l'invio degli sms, infatti ora ogni volta che si invia un messaggio viene richiesto un codice di conferma generato in maniera random dal portale stesso.

Non sò se c'entri qualcosa o meno, ma come posso risolvere questa situazione?

----------

## matttions

purtroppo sembra che abbiano messo un blocco dal 1 giugno contro gli script automatici.

 *Quote:*   

> ATTENZIONE: A causa dell'introduzione di tecniche di blocco per programmi automatici da parte del sito Alice.It, lo script alicesms non è più funzionante dal 1 giugno 2006!

 

dal sito :

http://www.marzocca.net/linux/alicetinsms.html

Che stress ...

erano comodissimi ...

speriamo che riescano a superare anche questo ostacolo

----------

## Galanti Davide

 *matttions wrote:*   

> purtroppo sembra che abbiano messo un blocco dal 1 giugno contro gli script automatici.
> 
>  *Quote:*   ATTENZIONE: A causa dell'introduzione di tecniche di blocco per programmi automatici da parte del sito Alice.It, lo script alicesms non è più funzionante dal 1 giugno 2006! 
> 
> dal sito :
> ...

 

Ti ringrazio non avevo notato, vabbè vorrà dire che per il momento userò tinsms solamente e invece di 20 sms ne manderò solo 10 ehehe. Grazie comunque

----------

