Friday 26 February 2010

Автоматично публикуване на IRC лог

Постановка на задачата - имаме IRC канал, на който трябва да се води лог, който да е публично достъпен. Вариантът с ръчно записване на лога и ъплоуд беше допустим като тест (макар така и да не се намери тестер). И така първи етап - запускане на лог бот. Използван беше IRC LogBot написан от Neo2k8 с предимството да е прост, да върши едно, и да го върши добре (unix way ;-)) и да е на PERL. Логът бързо порастна до над 1 Mb, като така си стоеше на машината с работещия бот. Преминаваме към втори етап - автоматичен ъплоуд, с нулиране на лога всеки ден. Първият лог беше изпратен на веб-сървъра в оргиналния му вид, всеки следващ ден трябваше да постъпва автоматично. Достъпът до сървъра е ограничен до scp и sftp, така че оставаме в тези рамки на организация на трансфера. Пишем bash скрипт:

#!/bin/sh

this_day = $(date +%F)

/usr/bin/pkill -f L0g_b0t.pl

/bin/mv "#channel_name.txt" $this_day.txt

/usr/bin/lftp -u username,password sftp://domain.org << END_UPLOAD cd www/irc_logs put $this_day.txt chmod 644 $this_day.txt END_UPLOAD /usr/bin/perl L0g_b0t.pl


Добавяме скрипта за изпълнение в cron, малко преди полунощ:

50 23 * * * cd /home/user/log_bot;./daily_logbot.sh

Особености: L0g_b0t.pl трябва да бъде пуснат ръчно, като първия старт се задават параметрите за връзка: IRC server, port, channel, IRC nick, след което трябва да бъде вторично пуснат отново, за да започне работа. Всички параметри се задават задължително, ботът малко подвеждащо показва стойности в квадратни скоби, приличащи на стойности по подразбиране, като всъщност те са само препоръчителни.