Wednesday, 4. March 2009, 08:48:00
Poszukując sposobów na powiększenie e-penisa trafiłem na temat
TIP: Send SMS alerts when emerge completes. Autor,
timeBandit, robił spory update (>500) pakietów i wkurzył się, kiedy
mersja poległa któryś-tam-raz z rzędu chwilę po tym jak odszedł od komputera. Postanowił więc zrobić sobie powiadomienia, które dostanie, jeżeli proces będzie wymagał niańczenia. (;
Powyższy poradnik zakłada, że mamy zainstalowane:
- Klienta mailx (mail-client/mailx), aby wysyłać maile prosto z linii poleceń.
- MTA (mail transfer agent) by mógł go użyć mailx1 - jak postfix, sendmail lub ssmtp.
Cały skrypt, który musi być uruchomiony zaraz po
emerge, wygląda tak:
~/bin/emobalert#!/bin/sh
# Record exit status of emerge--must precede ALL other commands!
[ $? -eq 0 ] && RESULT="PASS" || RESULT="FAIL"
# Change next line to your mobile/SMS address
SMS_ADDR="123456789@fajna.bramka.sms"
LAST_PKG="$(tac /var/log/emerge.log | awk '$2 == ">>>" {print $4,$5,$6,$7; exit;}')"
CFG_MODS="$(find /etc -iname '._cfg????_*' | wc -l)"
mail -s"Emerge Completed" $SMS_ADDR <<-EOM
${RESULT} ${LAST_PKG}
:::
${CFG_MODS} config updates pending
$*
EOM
Musisz oczywiście odpowiednio zmienić
SMS_ADDR2 i zrobić skrypt wykonywalnym. Jeżeli twój numer telefonu jest poufny zadbaj o odpowiednie prawa dostępu.
Używanie skryptu to bułka z masłem:
emerge -uDv world; emobalert
To wszystko! Pamiętaj, że skrypt musi się
odpowiednio uruchomić po
emerge, by mógł odczytać jego exit status (zawsze używaj średnika, nigdy
&& czy
|| jako połączenia potoków).
Po zakończeniu
emerge dostaniesz wiadomość:
From: root@localhost.localdomain
(Emerge Completed)
PASS (2 of 2) app-crypt/seahorse-2.22.3
:::
0 config updates pending
Można tu odczytać ostatni ebuild, który był instalowany, czy proces zakończył się sukcesem/porażką i czy czekają cię jakieś pliki konfiguracyjne do aktualizacji. Argumenty dopisane do
emobalert w linii poleceń zostaną dołączone do wiadomości.
___
1 Tutaj miałem pewien problem, ponieważ mailx nie chciał współpracować z obecnym u mnie nbsmtp. Udało się to jednak obejść.2 Szczerze mówiąc nie orientuję się jak wygląda sytuacja we wszystkich sieciach. W Plusie wysłanie wiadomości jest bardzo proste, wystarczy w polu SMS_ADDR wpisać +48mójnumertelefonu@text.plusgsm.pl i dostaniemy piękne powiadomienie3 Zmiany przy nbsmtp nie były wielkie, korzystam z mutt i postanowiłem użyć go do odwalenia za mnie brudnej roboty. Koniec skryptu u mnie wygląda mniej więcej tak:su -c "echo \"${LAST_PKG} ::: ${CFG_MODS} config updates pending.\" | mutt -s \"Emerge ${RESULT}\" $SMS_ADDR" - nazwa_użytkownika