Nous utiliserons pour cela :
Les scripts utilisés pour la mise en oeuvre de cette passerelle sont disponibles dans le repos git gnokii-admin-scripts.
Nous utiliserons une clé USB 3G Huawei K4511 dans ce test. Ce type de clé ont deux mode d'utilisation :
Par défaut, lorsque l'on connecte la clé USB à la machine, celle-ci est en mode “CD virtuel”. Pour basculer dans le mode modem GSM, nous allons utiliser l'outil usb-modeswitch qui s'en occupera.
apt-get install usb-modeswitch
Bus 001 Device 006: ID 12d1:14b7 Huawei Technologies Co., Ltd.
DefaultVendor= 0x12d1 DefaultProduct=0x14b7 TargetVendor= 0x12d1 TargetProduct= 0x14cc CheckSuccess=20 MessageContent="55534243123456780000000000000011062000000100000000000000000000"
Pour vérifier que le switching fonctionne, il sera nécessaire de redémarrer la machine (ou recharger les règles UDEV manuellement) et retenter l'insertion de la clé. Le switching avec usb_modeswitch devrai être lancer automatiquement un nouveau périphérique du type GSM modem (ttyUSB0 et ttyUSB1). Surveiller les logs kernel pour vous en assurer.
usb_modeswitch -c /etc/usb_modeswitch.d/12d1\:14b7
echo 12d1 14cc > /sys/bus/usb-serial/drivers/option1/new_id
Observer ensuite le résultat dans les logs du kernel et si cela fonctionne vous pouvez automatiser cela via une règle UDEV de cette manière :
echo 'SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", SYSFS{idProduct}=="14cc", RUN="/usr/local/sbin/detect_usb_key"' > /etc/udev/rules.d/99-usbkey.rules echo -e '#!/bin/bash\nmodprobe option\necho "12d1 14cc" > /sys/bus/usb-serial/drivers/option1/new_id' > /usr/local/sbin/detect_usb_key chmod 755 /usr/local/sbin/detect_usb_key
Comme pour une clé Huawei K4511, il faut tout d'abord utiliser usbmodswitch pour basculer notre clé en mode modem. Pour cela, il faut une version assez récente du paquet usb_modswitch (prendre la version backports sous Debian Squeeze) qui intègre cette clé. Au cas ou, voilà le contenu du fichier de config :
TargetVendor= 0x12d1 TargetProduct= 0x14db MessageContent="55534243123456780000000000000011062000000000000100000000000000" NoDriverLoading=1
Mais Huawei a changé un peu la donne avec ces dernières clés en intégrant la techno Hi-Link (http://www.huawei.com/en/about-huawei/newsroom/press-release/hw-093761-e353-data-card.htm). Cette technos à pour but d'afficher à l'ordinateur un simple adaptateur USB Ethernet sur lequel à coup de DHCP on pourra tout simplement se connecter à Internet. C'est nikel si on veut simplement se connecter à Internet justement mais pour nous qui voulons envoyer des SMS…
Heureusement, on peut rebasculer la clé en mode modem série et même bloquer la clé dans ce mode !
Pour cela :
echo "12d1 1442" > /sys/bus/usb-serial/drivers/option1/new_id
minicom -D /dev/ttyUSB0
AT^U2DIAG=0
AT^U2DIAG=119
echo "12d1 1c05" > /sys/bus/usb-serial/drivers/option1/new_id
apt-get install gnokii-cli
[global] port = /dev/ttyUSB0 model = AT connection = serial
mkdir -p /root/.config/gnokii ln -s /etc/gnokiirc /root/.config/gnokii/config
:~# gnokii --identify
gnokii --identify GNOKII Version 0.6.29 IMEI : XXXXXXXXXXXXXXXXXXX Manufacturer : Vodafone (Huawei) Model : K4511 Product name : K4511 Revision : 11.810.09.19.287
Comme toute carte SIM, celle de la clé 3G doit recevoir un code PIN pour pouvoir être utiliser. Il est possible de le faire manuellement en utilisant la commande :
gnokii --entersecuritycode PIN
gnokii --getsecuritycodestatus
Pour automatiser la saisi du code PIN, vous pouvez utiliser le script gnokii-init-modem.pl. Celui-ci communique directement avec la clé pour vérifier si elle attend le code PIN et lui donner si nécessaire. Il est nécessaire d'éditer ce script pour adapter les variables ce configuration suivante :
adduser --system gnokii adduser gnokii dialout
sms unix - n n - 1 pipe flags=Rq user=gnokii:dialout argv=/usr/local/sbin/mail2gnokii ${user}
sms.example.tld sms
postmap /etc/postfix/transport /etc/init.d/postfix reload
Une fois cette plate-forme en place, vous pourrez envoyer des SMS simplement en envoyant des mails avec des adresses sous la forme 0600000000@sms.example.tld. Seul le sujet de votre mail sera envoyé par SMS.
Au reboot de la machine ou à la reconnexion de la clé USB, il peut être nécessaire d'activer soit même manuellement la clé, c'est à dire :
usb_modeswitch -c /etc/usb_modeswitch.d/12d1\:14b7
detect_usb_key
gnokii --identify
gnokii-init-modem
Pour utiliser votre passerelle SMS pour les notifications Nagios il vous faudra définir dans Nagios un contact sous cette forme :
define contact{ contact_name joe_sms alias Joe (by SMS) host_notification_period 24x7 service_notification_period 24x7 host_notification_options d,u,r service_notification_options w,u,c,r host_notification_commands host-notify-by-epager service_notification_commands service-notify-by-epager pager 0600000000@sms.example.tld }
Par défaut, vous recevrez des messages sous la forme :
Si cela ne vous conviens pas, définissez vos propres commandes en vous inspirant de celle par défaut.
Le script mail2gnokii comporte une sécurité pour éviter que la passerelle soit utilisée pour envoyer des SMS à n'importe qui. La liste exhaustive des numéros de téléphone portable destinataires doit être définie dans la variable de configuration authorized_number du script.
Pour ajouter ou supprimer un numéro de téléphone de cette liste, il faut donc éditer le fichier /usr/local/sbin/mail2gnokii et modifier la variable authorized_number :
@authorized_number=("0600000000","0700000000");