Smstools

De OpenWikiBSD
Aller à : navigation, rechercher

Objectif : Envoyer (ou recevoir) des SMS depuis une machine, et ce de manière automatique, ou lorsqu'un évènement survient (Souci Nagios, réception mail, crontab,....)

Installation

Debian Lenny

apt-get install smstools
    • Un tail -f /var/log/daemon.log donne le nom du device , chez moi :/dev/ttyACM0
  • Une boulette dans les droits :
 chown -R smsd.smsd /var/log/sms* 
  • On relance
 /etc/init.d/smstools restart


OpenBSD

pkg_add smstools3 usbutil
echo "if [ -x /usr/local/bin/smsd ]; then
        install -d -o _smsd /var/run/smsd
        echo -n ' smsd';        /usr/local/bin/smsd
fi
"  >> /etc/rc.local

Ajouter _smsd au groupe dialer

dialer:*:119:_smsd

Trouver le modem

C'est le plus compliqué... Quel device dans /dev/ correspond au modem ??

Sous OpenBSD, le cordon USB vers un Sony K610i me disait :

umodem0 at uhub1 port 1 configuration 3 interface 1 "Sony Ericsson Sony Ericsson K610" rev 2.00/0.00 addr 2
umodem0: data interface 2, has CM over data, has break
umodem0: status change notification available
ucom0 at umodem0
umodem1 at uhub1 port 1 configuration 3 interface 3 "Sony Ericsson Sony Ericsson K610" rev 2.00/0.00 addr 2
umodem1: data interface 4, has CM over data, has break
umodem1: status change notification available
ucom1 at umodem1
cdce0 at uhub1 port 1 configuration 3 interface 8 "Sony Ericsson Sony Ericsson K610" rev 2.00/0.00 addr 2
cdce0: address @MAC
ugen0 at uhub1 port 1 configuration 3 "Sony Ericsson Sony Ericsson K610" rev 2.00/0.00 addr 

Et pourtant c'est : /dev/cuaU0

Utilisation

  • vi /etc/smsd.conf (On modifie la ligne device = ///// dans la partie GSM1 )
  • Un script piqué d'ici
#!/usr/local/bin/bash
# This script send a text sms at the command line by creating
# a sms file in the outgoing queue.
# I use it for testing.
# $1 is the destination phone number
# $2 is the message text
# if you leave $2 or both empty, the script will ask you
#DEST=33N°Tel au format international : Le 336XXXXX au lieu du 06XXXXX

DEST=$1
if [ -z "$DEST" ]; then
printf "Destination: "
read DEST
fi

TEXT=$2
if [ -z "$TEXT" ]; then
printf "Text: "
read TEXT
fi

== Debug ==
Attention, les smstools refuseront de fonctionner si vous utilisez les numéros en 06XX; seuls les formats 336XXx sont acceptés. De plus l'erreur est peu parlante :
 The modem answer was not OK: +CMS ERROR: 38 (Network out of order)


FILE=`mktemp /var/spool/sms/outgoing/send_$DEST`
chown _smsd $FILE
echo "To: $DEST" >> $FILE
echo "" >> $FILE
echo "$TEXT" >> $FILE
  • Puis un simple echo "Systèmes opérationnels Captain Kirk" | sendsms.sh, et c'est parti pour du monitoring temps-réel.
  • Tout se passe dans /var/spool/sms, avec des outgoing, des incoming, des sent...