# [OT] sms per komandozeile über sipgate verschicken

## hitachi

Hallo,

vor einiger Zeit habe ich einen Beitrag im Internet gelesen. Da ging es um die Möglichkeit SMS über Sipgate aus Kontact heraus zu versenden. Ich hatte danach folgende Idee:

Hey ich habe einen Server der immer läuft und ssh zulässt (sollte auch sicher sein. Habe dieses Skript zur Sicherheit laufen).

Ich habe ein Mobiltelefon mit dem ich ssh nutzen kann. Man kann zwar nicht so viel lesen, was macht man aber nicht alles ür 0,10 Euro Preisunterschied  :Wink:  Ich nutze MidpSSH.

Auf meinem lokalen Rechner habe ich das ganze schon zum Laufen bekommen (hatte dabei aber auch Hilfe). Dafür sind folgende Skripte in einem Ordner ~/bin angelegt worden:

 *~/bin/sms wrote:*   

> 
> 
> #!/bin/bash
> 
> NUMBER=`echo $1 | tr -c -d "[0-9]"`
> ...

 

 *~/bin/sipgateAPI-sms.pl wrote:*   

> 
> 
> #!/usr/bin/perl -w
> 
> #
> ...

 

Beide Skripte kann man über den oben angegeben Artikel bekommen. Das Zweite ist direkt von sipgate hier erhältlich. 

So jetzt kommen meine Fragen:

Benutzer Andreas hatte eine gute Frage:

 *Andreas wrote:*   

> Warum es keine gute idee ist ein Passwort als Kommandozeilenoption zu übergeben?
> 
> Weil damit jeder User auf dem System mittels ps das Passwort mitlesen kann.
> 
> Darüber sollten wir nachdenken 

 

Hat jemand eine Idee wie man diese Sicherheitslücke stopfen kann? Ich denke es wäre fast sicherer das Passwort direkt im Skript von sipgate zu haben und nur dem Eigentümer Leserechte zu geben. Außerdem wäre es nett, wenn man anstelle der Nummer auch Namen eingeben könnte und diese dann automatisch richtig in Nummer gewandelt würden. Im Moment muss ich noch immer etwas tippen wie:

```
./sms 49151123456789 "Hallo_Welt_wie_geht_es_dir?"
```

toll wäre etwas wie:

```
./sms welt "Hallo Welt, wie geht es Dir?
```

Ja Ihr seht richtig, die Leerzeichen funktionieren nicht richtig. Wie kann ich dieses Problem lösen?

Also ich bin für jede Idee offen und dankbar.

GrußLast edited by hitachi on Fri Feb 27, 2009 8:00 am; edited 1 time in total

----------

## think4urs11

 *alt wrote:*   

> #!/bin/bash
> 
> NUMBER=`echo $1 | tr -c -d "[0-9]"`
> 
> NUMBER=${NUMBER/#0/49}
> ...

 

 *neu wrote:*   

> #!/bin/bash
> 
> NUMBER=$(grep $1 ~/phonebook.lst | cut -d\  -f2)
> 
> ./sipgateAPI-sms.pl $NUMBER "$2"

 

Etwa in der Art, d.h. 'fully untested'. In phonebook.lst steht etwas wie

chef 491234567

frau 49832121253

buchmacher 358342426266

Für das Passwortproblem sollte es genügen im .pl "$ARGV[1]" durch "username" und "$ARGV[2]" durch "password" auszutauschen; hätte aber den Nachteil das jeder User eine eigene Version dieses Scripts bräuchte.

Um das auch noch zu umgehen müßte man das ähnlich wie die Tel. aus einem File 'rausgreppen' aber das überlasse ich mal den Perlgurus im Forum.

----------

## musv

Warum macht ihr nicht einfach 'ne Abfrage per read im Script selbst, nachdem das Script aufgerufen wurde. Nervigerweise muss dann zwar immer erst das Script aufgerufen und anschließend noch mal ein Passwort eingegeben werden, aber wenigstens sollte damit das Problem der Omnipräsenz von ps umgangen werden.

----------

## hitachi

@Think4UrS11:

Danke für die hilfreichen Tipps. Ich habe das sipgateAPI-sms.pl in "$ARGV[0]" und "$ARGV[1]" entsprechend angepasst und die Fehlermeldung auch darauf ausgerichtet. Auch habe ich die Stelle "@ARGV == 4" zu "@ARGV == 2" geändert.

Dann habe ich das mit dem Telefonbuch ausprobiert.

```
grep buchmacher ~/bin/phonebook.lst | cut -d\ -f2
```

 *Quote:*   

> cut: Trenner muss ein einzelnes Zeichen sein

 

Das habe ich jetzt in folgendes geändert:

 *Quote:*   

> #!/bin/bash
> 
> NUMBER=$(grep $1 ~/bin/phonebook.lst | cut -d" " -f2)
> 
> ./sipgateAPI-sms.pl $NUMBER "$2"

 

Das funktioniert jetzt recht gut. Danke für die Hilfe.

@musv:

Ich kenne mich damit leider kein bisschen aus. Ich freue mich einfach nur ein wenig wenn ich für etwa 1k Daten keine 19 Cent zahlen muss  :Wink: 

----------

