Temat: "przypominacz" przez GG
jeżeli są tu jacyś leniwi sklerotycy (tacy jak ja), to pewnie się tym zaineresują
jeżeli nic nie spaprasz po drodze, to po wykonaniu wszystkich instrukcji router (albo inny zwierz z linuxem) będzie ci przypominał o czym tylko chcesz
wymagania:
- najprawdopodobniej ext-root
- maszyna z dostępem do sieci i działającą synchronizacją czasu
- ekg (konsolowe gg dla linuxa)
- numerek gg
- at (bardzo sprytny programik do planowania zadań)
- kilka (tak z 15) szarych komórek
- trochę czasu do zmarnowania
1. instalujemy ekg
w konsoli:
opkg update
opkg install ekg
2. konfigurujemy ekg
- uruchamiamy ekg wydając komende 'ekg'
- wydajemy komendę 'set uin <numerek_gg>' (np. 'set uin 1234567')
- następnie 'set password <hasło_do_konta>'
- 'set email <jaliś@tam.adres.com>'
- 'save'
- 'connect'
(oczywiście wszystko jest napisane i to po polsku)
jeżeli ekg podłączy się do serwera, to możemy z niego wyjść komendą 'quit'
3. instalujemy at
opkg install at
I z at jest problem, bo w OpenWrt zadania są przechowywane w pamięci operacyjnej, więc żeby at nam po restarcie pamiętał zaplanowane zadania musimy zrobić taki myk:
- tworzymy sobie katalog '/etc/at/atjobs'
mkdir /etc/at
mkdir -r 777 /etc/at/atjobs
- tworzymy drugi katalog '/etc/at/atspool'
mkdir -r 777 /etc/at/atspool
- tworzymy plik '/etc/at/atjobs/.SEQ' o zawartości 00000
echo 00000 > /etc/at/atjobs/.SEQ
- ustawiany uprawnienia szatańską komendą
chmod 666 /etc/at/atjobs/.SEQ
- modyfikujemy plik '/etc/init.d/atd', żeby wyglądał mniej więcej tak:
#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org
START=90
start() {
# [ -d /var/spool/cron/atjobs ] || mkdir -p /var/spool/cron/atjobs
# [ -d /var/spool/cron/atspool ] || mkdir -p /var/spool/cron/atspool
# [ -f /var/spool/cron/atspool ] || > /var/spool/cron/atjobs/.SEQ
# chown -R nobody:nogroup /var/spool/cron/atjobs /var/spool/cron/atspool
ln -s /etc/at/atjobs /var/spool/cron/atjobs
ln -s /etc/at/atspool /var/spool/cron/atspool
sleep 5
atd
}
stop() {
killall atd
}
'sleep 5' dodałem bo parę razy mi się zdarzyło, ze atd uruchamiał się przed utworzeniem linków - dziwne....
- teraz uruchamiamy atd
/etc/init.d/atd enable
/etc/init.d/atd start
4. testujemy
- ekg z wiersza poleceń:
ekg msg <twój_nr_gg> 'treść wiadomości'
jeżeli przyszła wiadomość na Twoje gg, to ok. Jeżeli nie, to wracamy do konfiguracji ekg
- at
tu małe howto....
podstawowa składnia komendy at to 'at hh:mm [mm/dd/rrrr]'. data jest opcjonalna. jeżeli jej nie ma, zadanie zostanie wykonane o podanej godzinie w ciągu najbliższej doby.
Po wydaniu komendy pojawi nam się taki mini-edytor. możemy w nim napisać skrypt, czy co tam sobie chcemy. Po wklepaniu komend do wykonania wciskamy ALT+D, żeby opuścić edytor. wygląda to mniej więcej tak:
root@gate:/# at 12:00 1/12/2015
warning: commands will be executed using /bin/sh
at> /skrypty/skrypt.sh
at> <EOT>
job 18 at Mon Jan 12 12:00:00 2015
root@gate:/#
ten konkretny przykład uruchomi skrypt '/skrypty/skrypt.sh' 12-go stycznia 2015 o godzinie 12:00. proste, nie?
komenda 'at -l' wyświetla wszystkie zaplanowane zadania i ich numery.
komenda 'at -c <nr_zadania>' pokazuje szczegóły konkretnego zadania.
komenda 'atrm <numer_zadania>' usuwa zadanie.
- co do samego testowania, to prosta sprawa. planujemy zadanie ( np. 'ekg msg <numer> test') na "za parę minut" i czekamy (pamiętaj, ze ekg potrzebuje kilka sekund, żeby się zalogować). jeżeli działa, to jesteśmy w domu. jeżeli nie, to znowu wracamy do konfiguracji.
i tak na dobrą sprawę można by na tym skończyć, ale ponieważ jestem leniwy jak mało kto, napisałem sobie jeszcze super skomplikowany skrypt do szybkiego dodawania powiadomień:
#!/bin/ash
echo ekg msg 12345678 $2 | at $1
(zmienić 12345678 na swój nr gg)
nazwałem go 'przypomnij', wrzuciłem go do /bin i nadałem mu 777, wiec żeby dodać przypomnienie pisze sobie po prostu w terminalu na przykład:
przypomnij '12:00 1/1/2011' 'jeżeli czytasz tą wiadomość, to gratuluje - nie zapiłeś się na śmierć w Sylwestra :D'
Więcej grzechów nie pamiętam. Jak sobie przypomne, to nie omieszkam zaśmiecić forum