Перенаправить в Syslog

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
trio
рядовой
Сообщения: 19
Зарегистрирован: 2009-07-09 21:10:54

Перенаправить в Syslog

Непрочитанное сообщение trio » 2009-07-09 21:27:37

Подскажите, возможно выполнение скрипта записать в syslog ?
или просто перенаправить в лог с датой выполнения прикрученый в crontabe

Код: Выделить всё

#!/usr/bin/perl
use CGI qw(:standard);
use Net::Ping;
$host = '192.168.1.10';
$p = Net::Ping->new('icmp');
if ($p->ping($host)) {use Net::Telnet;
$telnet = new Net::Telnet (Timeout=>10,
Prompt => '/[\w().-]*[\$#>:.]\s?(?:\(enable\))?\s*$/');
$telnet->open('xxx.xxx.x.xx');
$telnet->login('login', 'pass');
print $telnet->cmd('ls');
$telnet->close;
}
else {$output .= qq~$host - Сервер не  пигнуется.\n~;}
$p->close();
#print header();
print $output; 
Кстати может кому пригодиться скрит
писался под задачу следующего характера:
Пингуется удаленный модем, если все нормально, то по телнету с логином и паролем входим на модем с другой стороны и выполняем нужную комманду в данном случае эта команда чтения каталога "ls"

Можно легко поднастроить под свои нужды

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Syward
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-07-06 22:27:33
Откуда: Mytischi
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение Syward » 2009-07-10 8:21:09

Код: Выделить всё

#!/usr/bin/perl
use CGI qw(:standard);
use Net::Ping;
$host = '192.168.1.10';

sub _log {
  local($msg) = @_;
  my $log_file = '/path/to/log/log.log';
  open LF, ">>$log_file";.
  print LF $msg;
  close LF;
}

$p = Net::Ping->new('icmp');
if ($p->ping($host)) {use Net::Telnet;
$telnet = new Net::Telnet (Timeout=>10,
Prompt => '/[\w().-]*[\$#>:.]\s?(?:\(enable\))?\s*$/');
$telnet->open('xxx.xxx.x.xx');
$telnet->login('login', 'pass');
print $telnet->cmd('ls');
$telnet->close;
}
else {$output .= qq~$host - Сервер не  пигнуется.\n~;}
$p->close();
#print header();

_log(_date(time)." $output\n");

print $output; 
не?
Существует рoвнo oдин интуитивнo пoнятный интерфейс - сoска. Все остальные oсваиваются путем oбучения или методом тыка...©

Аватара пользователя
initYs
рядовой
Сообщения: 14
Зарегистрирован: 2009-07-09 11:07:07
Откуда: из мамы

Re: Перенаправить в Syslog

Непрочитанное сообщение initYs » 2009-07-10 8:30:59

посмотреть тут http://search.cpan.org/search?query=syslog&mode=all и использовать нечто из готовых модулей.

trio
рядовой
Сообщения: 19
Зарегистрирован: 2009-07-09 21:10:54

Re: Перенаправить в Syslog

Непрочитанное сообщение trio » 2009-07-10 14:32:06

Код: Выделить всё

Undefined subroutine $main::_date called at ./ping.pl line 25
не канает. :(

Аватара пользователя
initYs
рядовой
Сообщения: 14
Зарегистрирован: 2009-07-09 11:07:07
Откуда: из мамы

Re: Перенаправить в Syslog

Непрочитанное сообщение initYs » 2009-07-10 14:58:19

так и не будет.. нет подпрограммы _date() в листинге, подставь текущее время.. и я бы использовал Time::Local для перевода из формата time в необходимый.

Аватара пользователя
Syward
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-07-06 22:27:33
Откуда: Mytischi
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение Syward » 2009-07-10 15:06:01

Код: Выделить всё

sub _date {
  local($t) = @_;
  local ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($t);
  $mon++;
  $year=$year+1900;
  if ($sec < 10) {$sec="0".$sec;}
  if ($min < 10) {$min="0".$min;}
  if ($hour < 10) {$hour="0".$hour;}
  if ($mday < 10) {$mday="0".$mday;}
  if ($mon < 10) {$mon="0".$mon;}
  return "$year-$mon-$mday $hour:$min:$sec";
}
забыл про него :)
UPD:
только сейчас заметил: раздел-то по шеллу.
Существует рoвнo oдин интуитивнo пoнятный интерфейс - сoска. Все остальные oсваиваются путем oбучения или методом тыка...©

trio
рядовой
Сообщения: 19
Зарегистрирован: 2009-07-09 21:10:54

Re: Перенаправить в Syslog

Непрочитанное сообщение trio » 2009-07-11 22:49:10

Низкий тебе поклон Syward :Yahoo!: :good: :drinks:
Респек и уважуха :-D
Все теперь отличненько работает и тихо пишет логи.
Всем остальным также спасибо за подсказки.
Можна тему закрывать

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение paix » 2009-07-22 11:44:37

а к чему такие сложности, если достаточно стандартный вывод перенаправить конвеером в лог-файл ?
With best wishes, Sergej Kandyla

Аватара пользователя
Syward
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-07-06 22:27:33
Откуда: Mytischi
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение Syward » 2009-07-22 13:51:18

paix писал(а):а к чему такие сложности, если достаточно стандартный вывод перенаправить конвеером в лог-файл ?
А если он заглушен или нужно не в лог перенаправить, а в мусю?
Существует рoвнo oдин интуитивнo пoнятный интерфейс - сoска. Все остальные oсваиваются путем oбучения или методом тыка...©

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение paix » 2009-07-22 14:22:48

Syward писал(а):
paix писал(а):а к чему такие сложности, если достаточно стандартный вывод перенаправить конвеером в лог-файл ?
А если он заглушен или нужно не в лог перенаправить, а в мусю?
про мусю речи не было.
В остальном это ошибочный способ проектирования. Ошибочный, потому что сложный.

Все должно быть настолько просто, насколько возможно.
Каждая программа должна хорошо выполнять свою функцию.
В сислог пишут демоны, которые запущены постоянно.
Отдельные маленькие програмки вообще не должны ничего знать о логах, сообщение со стандартного вывода можно направаить уже как угодно и куда угодно. Это проще и гибче.
И если программе нечего сказать, она должна молчать.
With best wishes, Sergej Kandyla

Аватара пользователя
Syward
мл. сержант
Сообщения: 81
Зарегистрирован: 2008-07-06 22:27:33
Откуда: Mytischi
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение Syward » 2009-07-22 19:31:25

paix писал(а): про мусю речи не было.
В остальном это ошибочный способ проектирования. Ошибочный, потому что сложный.
Все должно быть настолько просто, насколько возможно.
Согласен. Но саб в пять строк кода вроде и не сложен, я думаю.
paix писал(а): Каждая программа должна хорошо выполнять свою функцию.
А программер не должен задумываться, как ему залогировать то или иное действие, особенно - если скрипт работает с базой, в которой вывод на экран по понятным причинам заглушен.
paix писал(а): В сислог пишут демоны, которые запущены постоянно.
Отдельные маленькие програмки вообще не должны ничего знать о логах, сообщение со стандартного вывода можно направаить уже как угодно и куда угодно. Это проще и гибче.
И опять-таки: зависит от ситуации. Решение должно быть как можно более универсальным.
paix писал(а): И если программе нечего сказать, она должна молчать.
У меня скрипт висит, собирает fdb записи со свичей, так вот если ему нечего сказать, значит случился ахтунг и нужно слать мыло. кидать СМСки и вообще орать дурниной ;)

А вообще, каждый делает как ему удобней. Мне удобней сделать библиотеку, подключить ее по мере необходимости и , если нужно какое-либо действие записать - сделать _log_mysql("ахтунг");, нежели городить бока с перенаправлением в сислог. Никому не навязываю, вам удобней в сислог перенаправить, без проблем :)
Существует рoвнo oдин интуитивнo пoнятный интерфейс - сoска. Все остальные oсваиваются путем oбучения или методом тыка...©

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение paix » 2009-07-23 11:10:15

От задачи много чего зависит, безусловно.
Но я говорю в общем, о стиле программирования для UNIX.
Все программы в подавляющей массе придерживаются определенных правил и стиля. K.I.S.S.
Именно это и делает UNIX таким мощным.
With best wishes, Sergej Kandyla

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Перенаправить в Syslog

Непрочитанное сообщение Alex Keda » 2009-07-24 10:55:47

Код: Выделить всё

man logger
Убей их всех! Бог потом рассортирует...