Для администрирования сервера на ОСе FreeBSD, очень полезно када под рукой нету ssh клиента. Кому надо могу прислать данное чудо. Еще оно умеет смареть аптайм, правила фаервола, и щяс дописываю чтоб статистику из squid`a выдерал.
сначала из портов надо ставить NET::OSCAR cd /usr/ports/net-im/p5-Net-OSCAR make install Далее чтоб не слать всем привожу листинг файла bot.pl у меня он запускается так # perl bot.pl & #!/usr/bin/perl use Net::OSCAR; # конфигурационные данные $MAX_SPEED=512; # UIN админа бота $ADM_UIN=457837749; # хеш, содержащий имена команд и связанные с ними функции %functions = ("uptime" =>\&uptime, "stat" => \&stat, "shutdown" => \&shutdown, "sysctl" => \&sysctl, "sysctl_" => \&sysctl_, "sh" => \&sh, "reliz" => \&reliz); $oscar = Net::OSCAR->new(); $oscar->set_callback_im_in(\&message_callback); # здесь поместите свой UIN и пароль $oscar->signon(123456789, "тест") or die("Авторизация не удалась!\n"); $quit = 0; while(!$quit) { $oscar->do_one_loop(); } sub message_callback { local($cmd, $params, $result); local $result = ""; local($client, $uin, $msg) = @_; $ADM_UIN=new Net::OSCAR::Screenname $ADM_UIN; return if($uin ne $ADM_UIN); if(($cmd, $params) = $msg =~ /^\!([^\ ]+)\s*(.*)$/) { eval {$result = exists($functions{$cmd}) ? $functions{$cmd}($params) : ""}; if($@) {$result="Error: $@";} $client->send_im($uin, $result) if $result; } } sub uptime { my ($cmd); $result=`uptime`; return $result; } sub reliz { my ($cmd); $result=`uname -a`; return $result; } sub sysctl { my ($cmd); $result=`sysctl -a | grep net.inet.ip`; return $result; } sub sysctl_ { my ($result, $cmd, $cons); my $cons=$_[0]; $cmd=`sysctl net.inet.ip.$cons`; system($cmd); $result=`sysctl -a | grep net.inet.ip.".$cons"`; return $result; } sub sh { my ($cmd); my $cmd=$_[0]; $result=`$cmd`; return $result; }
и так: !sh имя комманды !uptime показывает аптайм сервака !sysctl выводит данные net.inet.ip.xxx !sysctl_ изменение переменных net.inet.ip !reliz выводит uname -a
перл - это мое любимое, присылай. Net::OSCAR слышал глючит если получатель находится в оффлайне. ну типа до получателя тогда сообщение не доходит когда он выходит в онлайн. кстати вместо ssh я бы не рискнул ее ставить. Но какие-то интересные штучки наверное можно с ее помошью смастерить.
Георгий, листинг файла выложил выше Георгий, хз, мне удобно када у меня тока мобила под рукой а из офиса орут типа чета не работает инет или скорость зарезалась, тада на мобиле беру прописываю и готово -)
Вывод команд ботом: Smolensk (2336 27/02/2008) !uptime ххх (2337 27/02/2008) 11:29PM up 5:47, 2 users, load averages: 6.09, 6.03, 6.02 Smolensk (2356 27/02/2008) !sh ipfw show ххх (2357 27/02/2008) 65535 0 0 allow ip from any to any Smolensk (23:30:14 27/02/2008) !sysctl ххх (23:30:17 27/02/2008) net.inet.ip.portrange.randomtime: 45 net.inet.ip.portrange.randomcps: 10 net.inet.ip.portrange.randomized: 1 ...
Георгий, прикрути к своей система зачисления платежей, типа чтоб выдавал баланс с подписки, создание новой подписки, выписка счетов и т.д.
да вроде бы нет большого смысла. Проверить баланс можно итак практически с любого мобильника на wap.pay2sat.com создание подписок, пополнение - это все равно действия которые потребуют компьютера (подписка создается для того чтобы работать на компьютере). Ну т.е. если узнавание баланса с мобильника нужно для того чтобы клиент мог по пути домой при необходимости зайти в Элекснет и произвести оплату, то с созданием подписки и выпиской счетов вряд ли кто-то будет заморачиваться, когда намного удобнее сделать это через нормальный браузер с компьютера.</div>
дело может быть не в строках, а в 450 символах с таким ограничением у некоторых клиентов сталкиваюсь когда пытаюсь отправить длинное сообщение по ICQ