forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.UNIX.BSD

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 03.04.2018, 18:50
Ivan Novikov
Guest
 
Сообщений: n/a
По умолчанию отслеживание dmesg

Ivan Novikov написал(а) к All в Apr 18 19:00:14 по местному времени:


Нello everybody!

Есть usb вайфайный свисток который, как положено китайскому говну, время от времени глючит и перестаёт функционировать.
При этом в лог валится строчка:
kernel: urtwn0: device timeout
Сам девайс вполне лечится с помощью ifconfig wlan0 down && sleep 5 && ifconfig wlan0 up
Соответственно вопрос: есть ли какое-нибудь идейно верное средство для отслеживания определённой строчки в логе и запуска по её появлении заданной команды?

Понятное дело, что несложно наворотить небольшой скрипт в кронтаб, но у меня есть предчувствие, что есть готовые более изящные решения.

Ivan


--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #2  
Старый 03.04.2018, 19:30
Slawa Olhovchenkov
Guest
 
Сообщений: n/a
По умолчанию отслеживание dmesg

Slawa Olhovchenkov написал(а) к Ivan Novikov в Apr 18 18:17:22 по местному времени:

Нello Ivan!

03 Apr 18, Ivan Novikov writes to All:

IN> Есть usb вайфайный свисток который, как положено китайскому говну, время от
IN> времени глючит и перестаёт функционировать. При этом в лог валится строчка:
IN> kernel: urtwn0: device timeout
IN> Сам девайс вполне лечится с помощью ifconfig wlan0 down && sleep 5 &&
IN> ifconfig wlan0 up Соответственно вопрос: есть ли какое-нибудь идейно верное
IN> средство для отслеживания определённой строчки в логе и запуска по её
IN> появлении заданной команды?

IN> Понятное дело, что несложно наворотить небольшой скрипт в кронтаб, но у
IN> меня есть предчувствие, что есть готовые более изящные решения.

man syslog.conf

The action field of each line specifies the action to be taken when the
selector field selects a message. There are five forms:

o A vertical bar (``|''), followed by a command to pipe the selected
messages to. The command is passed to sh(1) for evaluation, so usual
shell metacharacters or input/output redirection can occur. (Note
however that redirecting stdio(3) buffered output from the invoked
command can cause additional delays, or even lost output data in case
a logging subprocess exited with a signal.) The command itself runs
with stdout and stderr redirected to /dev/null. Upon receipt of a
SIGНUP, syslogd(8) will close the pipe to the process. If the
process did not exit voluntarily, it will be sent a SIGTERM signal
after a grace period of up to 60 seconds.

The command will only be started once data arrives that should be
piped to it. If it exited later, it will be restarted as necessary.
So if it is desired that the subprocess should get exactly one line
of input only (which can be very resource-consuming if there are a
lot of messages flowing quickly), this can be achieved by exiting
after just one line of input. If necessary, a script wrapper can be
written to this effect.

Unless the command is a full pipeline, it is probably useful to start
the command with exec so that the invoking shell process does not
wait for the command to complete. Warning: the process is started
under the UID invoking syslogd(8), normally the superuser.

... Даже маленькая практика стоит большой теории
--- GoldED+/BSD 1.1.5-b20110223-b20110223
Ответить с цитированием
  #3  
Старый 03.04.2018, 19:59
Eugene Grosbein
Guest
 
Сообщений: n/a
По умолчанию Re: отслеживание dmesg

Eugene Grosbein написал(а) к Ivan Novikov в Apr 18 23:26:20 по местному времени:

03 апр. 2018, вторник, в 17:00 NOVT, Ivan Novikov написал(а):

IN> Есть usb вайфайный свисток который, как положено китайскому говну, время от
IN> времени глючит и перестаёт функционировать.
IN> При этом в лог валится строчка:
IN> kernel: urtwn0: device timeout
IN> Сам девайс вполне лечится с помощью ifconfig wlan0 down && sleep 5 && ifconfig
IN> wlan0 up
IN> Соответственно вопрос: есть ли какое-нибудь идейно верное средство для
IN> отслеживания определённой строчки в логе и запуска по её появлении заданной
IN> команды?
IN> Понятное дело, что несложно наворотить небольшой скрипт в кронтаб, но у меня
IN> есть предчувствие, что есть готовые более изящные решения.

Есть штатная функция у syslogd дублировать строчки на вход скрипту
типа такого:

#!/bin/sh

while read month day time host rest
do
case "$rest" in
"kernel: urtwn"*": device timeout")
ifconfig ... ;;
esac > /dev/null 2>&1
done

Для этого в /etc/syslog.conf достаточно написать:

kern.* |exec /path/to/script

Достаточно готовое решение для тебя? :-)

Eugene
--- slrn/1.0.2 (FreeBSD)
Ответить с цитированием
  #4  
Старый 04.04.2018, 12:51
Ivan Novikov
Guest
 
Сообщений: n/a
По умолчанию отслеживание dmesg

Ivan Novikov написал(а) к Eugene Grosbein в Apr 18 13:15:16 по местному времени:


Нello Eugene!

03 Apr 18 23:26, you wrote to me:
IN>> есть ли какое-нибудь идейно верное средство для отслеживания
IN>> определённой строчки в логе и запуска по её появлении заданной
IN>> команды?
EG>
EG> Есть штатная функция у syslogd дублировать строчки на вход скрипту
EG> типа такого:
[хрумъ]

спасибо, думаю, что такой способ будет в самый раз.
так и знал, что все велосипеды давно изобретены.


Ivan


--- GoldED+/BSD 1.1.5-b20160322-b20160322
Ответить с цитированием
  #5  
Старый 04.04.2018, 19:21
Igor Goroun
Guest
 
Сообщений: n/a
По умолчанию отслеживание dmesg

Igor Goroun написал(а) к Ivan Novikov в Apr 18 18:08:34 по местному времени:

Нi Ivan Novikov!

IN> При этом в лог валится строчка:
IN> kernel: urtwn0: device timeout
IN> Сам девайс вполне лечится с помощью ifconfig wlan0 down && sleep 5 && ifconfig
IN> wlan0 up
IN> Соответственно вопрос: есть ли какое-нибудь идейно верное средство для
IN> отслеживания определённой строчки в логе и запуска по её появлении заданной
IN> команды?
IN> Понятное дело, что несложно наворотить небольшой скрипт в кронтаб, но у меня
IN> есть предчувствие, что есть готовые более изящные решения.

Не уверен на счет изящности, но monit бы с этим справился.

Igor Goroun igor.goroun@gmail.com
http://snake.mk.ua 2:466/4.1@fidonet

--- Sent with FTNW. https://fido.snake.mk.ua
Ответить с цитированием
  #6  
Старый 04.04.2018, 19:21
Igor Goroun
Guest
 
Сообщений: n/a
По умолчанию отслеживание dmesg

Igor Goroun написал(а) к Eugene Grosbein в Apr 18 18:09:58 по местному времени:

Нi Eugene Grosbein!

EG> Есть штатная функция у syslogd дублировать строчки на вход скрипту
EG> типа такого:
EG> #!/bin/sh
EG> while read month day time host rest
EG> do
EG> case "$rest" in
EG> "kernel: urtwn"*": device timeout")
EG> ifconfig ... ;;
esac >> /dev/null 2>&1
EG> done
EG> Для этого в /etc/syslog.conf достаточно написать:
EG> kern.* |exec /path/to/script
EG> Достаточно готовое решение для тебя? :-)

Абалдеть, и я возьму на заметку...

Igor Goroun igor.goroun@gmail.com
http://snake.mk.ua 2:466/4.1@fidonet

--- Sent with FTNW. https://fido.snake.mk.ua
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 10:39. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot