#1
|
|||
|
|||
отслеживание 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
|
|||
|
|||
отслеживание 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
|
|||
|
|||
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
|
|||
|
|||
отслеживание 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
|
|||
|
|||
отслеживание 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
|
|||
|
|||
отслеживание 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 |