LINUX.ORG.RU
ФорумAdmin

Вот наваял скриптик для сканирования dmesg и выполнения определенных действий...


0

0

Возникла у меня такая вот необходимость, искал по инету ничего не нашел,
вот сделал:

#!/bin/bash
#
# simple scan dmesg
# event files:
#    DEBUG=0
#    STRING="scaning dmesg string"
#    EXEC="exec command"
#

EVENTDIR=/etc/scan-dmesg
sleep 2

if [ ! -e "$1" ]; then
    TMPFILE=`mktemp`
    dmesg > $TMPFILE
    $0 $TMPFILE &
    exit 0
fi

if [ "`dmesg | diff $1 -`" ] ; then
    TMPFILE=`mktemp`
    dmesg > $TMPFILE
    for FILE in $EVENTDIR/* ; do
        . $FILE
        if diff $1 $TMPFILE | grep -q "$STRING" ; then
            $EXEC > /dev/null 2>&1
            if [ "$DEBUG" ] ; then
                echo "`date` $0: for event $FILE exec $EXEC" >> /var/log/scan-dmesg
            fi
        fi
    done
    rm -rf $1
    $0 $TMPFILE &
    exit 0
fi

$0 $1 &

exit 0


в директории /etc/scan-dmesg создать файлы с содержимым:
DEBUG - для ведения лога
STRING - строка которую ловит grep
EXEC - команда на выполнение

Думаю может кому обязательно пригодится!

Re: Вот наваял скриптик для сканирования dmesg и выполнения определенных действий...

Я делал похожее на С++ и реагировало оно на изменение как у тя но только изменение проверялось ядерной функцией (кажется, давно это было).

cyclon ★★★★★ ()

Re: Вот наваял скриптик для сканирования dmesg и выполнения определенных действий...

Вариант 1: kernel -- syslog ->named_pipe->your_daemon
Вариант 2: tail -f /var/log/kernel.log | your_daemon

sdio ★★★★★ ()

Re: Вот наваял скриптик для сканирования dmesg и выполнения определенных действий...

я совершенно не против других вариантов :)
в ФС3 к примеру kernel.log нет.
А возникла такая вот необходимость потому что
есть флешка (другие работают отлично) которая совершенно отказывается определяться без
дополнительной команды fdisk -l

anonymous2 ★★★★★ ()

Re: Вот наваял скриптик для сканирования dmesg и выполнения определенных действий...

1. mkfifo /var/log/kernel_f
в /etc/syslog.conf
kern.*                          |/var/log/kernel_f
----------------------------------------------------------
2. Добавь в /etc/syslog.conf
kern.*                          -/var/log/kernel.log

И будет тебе kerenl.log

sdio ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.