Showing posts with label IRC bot cron. Show all posts
Showing posts with label IRC bot cron. Show all posts

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, след което трябва да бъде вторично пуснат отново, за да започне работа. Всички параметри се задават задължително, ботът малко подвеждащо показва стойности в квадратни скоби, приличащи на стойности по подразбиране, като всъщност те са само препоръчителни.