Powiadamianie sms’em w systemie Linux

Wpis zamieszczony o 13:34:04, 13 stycznia 2007 Trackback


Ostatnio wykonałem szybką i sprawną migrację całego mojego sprzętu na dystrybucję GNU/Linux Gentoo (spokojnie, nie opuszczam Ubuntu ani nie odwracam się tylem do Community!). Potrzebowałem narzędzia, które informowałoby mnie w każdym momencie i w każdym czasie o zakończeniu kompilacji na moim komputerze domowym. Pomyślałem oczywiście o powiadamianiu SMS. Przykładowy scenariusz:
Wychodzę na uczelnię z domu zostawiając kompilację kdebase. W trakcie 3 wykładu przychodzi do mnie sms informujący mnie o stanie wykonanej czynności, ostatnio zainstalowanych pakietach, czasie kompilacji. Loguję się poprzez ssh z komórki na mój komp, odświeżam pliki konfiguracyjne i zamykam system.
Niemożliwe? Bynajmniej!! Możliwe w 100%! Krótki i treściwy How To:

 

Zaznaczam, że powiadamianie sms’em możliwe jest na tą chwilę tylko i wyłącznie dla użytkowników posiadających konto GMail oraz komórkę w sieci PlusGSM. W najbliższej przyszłości (czyt. po sesji :P) mam zamiar przerodzić projekt w większą aplikację do powiadamiania użytkownika o dowolnej czynności. HowTo jest tylko szkicem! Aplikacja „mail” powinna znajdować się w paczce „sendmail”.

Konfiguracja powiadamiania SMS'em w Linuksie

1. Konfigurujemy sSMTP. Oczywiście komendy typowe dla systemu Gentoo zamieniamy na typowe dla Ubuntu (sudo apt-get install itp.). Gdyby ktoś bardzo chciał mogę dać zaproszenie do GMail.
2. Tworzymy plik wykonywalny (w dowolnym miejscu, może być np. /opt/powiadom) i wpisujemy doń:

#!/bin/bash
if [ $? = 0 ];
then
{
echo "Emerge zakonczone, ostatni zainstalowany pakiet:";
genlop -lnu | sed -e "s/.*\([/]\+\)/\1/" | tail -n 2;
} | mail -s "LOG" -c 48xxxxxxxxx@text.plusgsm.pl 48xxxxxxxx@text.plusgsm.pl;
else { echo "EMERGE NIEUDANE"; } | mail -s "LOG" -c 48xxxxxxxxxxxxxxx@text.plusgsm.pl 48xxxxxxxxxxxx@text.plusgsm.pl ;
fi
Po czym modyfikujemy do dla swoich potrzeb. Powyższy przeznaczony jest do powiadamiania o statusie wykonania Emerge. Po drobnej modyfikacji może on służyć do powiadamiania o statusie wykonania dist-upgrade lub innej czynności związanej z apt-get.
Modyfikacje wnosić możemy w dowolny sposób, pamiętając o zachowaniu składni języka BASH.
3. Dodajemy dowiązanie symboliczne naszego pliku wykonywalnego do /usr/sbin/powiadom
4. Przykładowe wywołanie skryptu:
$ sudo apt-get dist-upgrade; sudo powiadom
# emerge -vaD world; powiadom

Skrypt jest na razie tylko skryptem. Nie ponoszę odpowiedzialności za jego działanie. Jest to pomysł na większe dzieło, którym zamierzam się zając w najbliższych tygodniach. Rozszerzenie funkcji powiadamiania na inne sieci GSM + uniezależnienie skryptu od GMail + zwiększenie funkcjonalności + działanie na wszystkich systemach + uniwersalność. To będzie mój cel w najbliższym czasie. Dodatkowym celem będzie rozszerzenie funkcjonalności na serwery XMPP.

Komentarze do “Powiadamianie sms’em w systemie Linux”


  1. http://ceti.pl/~miki/komputery/sms.html
    to jest w portage, emerge sms
    w debianie sms-pl
    enjoy. hth.


  2. Znam doskonale to narzędzie. Nie wystarcza do moich potrzeb, jest zwyczajnie nieefektywne, jest za stare, nie działa. Początkowo chciałem z niego skorzystać, lecz okazało się że nie jest w stanie sprostać moim wymaganiom.
    Unhandled exception in main: Unknown SMS->WWW gateway. taki przykład ;)


  3. #v+
    Program do wysyłania SMS‘ów
    Po ponad półtorarocznej przerwie program ożył ponownie! 29 grudnia 2006 została wydana nowa wersja. Zapraszam do pobrania i używania. #v-
    czytanie ze zrozumieniem siada?
    anounce: http://www.ma.krakow.pl/pipermail/sms-users/2006q4/000306.html #v+
    Wszystko dzieki zaangazowaniu Adama Michalskiego, ktory
    przeprowadzil aktualizacje programu do aktualnych bramek operatorow.
    Zyczmy mu wytrwalosci ;-) #v-


  4. I ta właśnie najnowsza wersji mi nie działa :-). Gdyby działała HowTo wyglądałby inaczej :) Poza tym – wysyłanie sms via WWW gateway nie jest tym czego potrzebowałem. Jestem w dość dużej sieci osiedlowej i nigdy nie udaje mi się wbić w limit. Pewnie inni także tak mają.


  5. To pisz bugreport, chyba nie warto wymyslac jeszcze raz kola? A widac ze komus sie chcialo zrobic update wersji.. to teraz poprawiac bugi pewnie tez.
    Powodzenia, howgh!


  6. Chyba nie przemyślałeś wszystkiego zanim zacząłeś pisać. Ja pisałbym to w Perlu użyłbym LWP i może Net::Jabber, może sendxmpp (powinno Cie zainteresować)? Czemu sam skrypt nie uruchamia emerge?


  7. Racja – nie przemyślałem. Potrzebowałem szybkiego narzędzia do szybkiego załatwienia problemu, dostępne oprogramowanie nie działało więc w jakieś 20 minut zrobiłem to-to na górze. Jak pisałem to tylko szkic bez większego pomysłu (prócz pomysłu „musi działać”). Sendxmpp na tapecie leży już od dłiuższego czasu, niestety brak czasu :(.

    Skrypt nie uruchamia emerge gdyż w założeniu ma być uniwersalny. Oczywiście mógłbym dodać do niego wywołanie emerge z parametrami przekazanymi do skryptu, jednak wtedy straciłbym możliwość „monitorowania” działania innych aplikacji (jak np. ściągania płyty iso wgetem :)).

    Dzięki Seban za wskazówki co do LWP, Perl i Net::Jabber. Jak napisałem – po sesji wezmę się na poważnie za to. Na razie jest to tylko ułatwienie sobie życia :).


  8. Ja do powiadomień używam programu erasms nelchael’a. W zupełności spełnia moje oczekiwania.


  9. Hmmm… nie widzę powodu, dla którego skrypt ograniczony jest tylko do GMaila.
    Chyba, że chodzi o informację o nadawcy, bo u mnie ta linijka:
    echo -e „test smsa\n.\n” | mail -s „test” \
    -c 48xxxxxxxxx@text.plusgsm.pl \
    48xxxxxxxxx@text.plusgsm.pl
    wystarczyła.


  10. dostałes

Dodaj komentarz

Textile jest włączony. Zobacz składnię (wiki.jogger.pl)

code