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 ekg2. 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 atI 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 start4. 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 ![]()