Согласно Snort Manual v2.9.11 , написанному подThe Snort Project
Чтобы читать пакеты и записывать их на диск, нам нужно указать каталог протоколирования, который, если не указан, по умолчанию создается с именем log
в текущем каталоге. Если каталог журнала не настроен в snort, он завершается с сообщением об ошибке.
Итак, вам нужно указать каталог логирования в скрипте init
при запуске самого snort, набрав:
./snort -q -dev -l /path/to/log/file
Теперь сохраните сценарий и перезапустите службу.
Кроме того, подумайте над тем, чтобы уделить время этому скрипту markus1982 . Это было бы очень полезно.
У меня была та же проблема, но я не нашел ничего удовлетворительного, поэтому вот несколько обходных путей.
${PS1@P}
В более новых версиях bash вы можете просто напечатать приглашение самостоятельно с помощью echo "${PS1@P}"
. Форма раскрытия переменных ${var@P}
означает раскрытие escape-символов подсказки внутри переменной.
kill -WINCH "$$"
Еще один трюк, который вы можете попробовать, это убить вашу оболочку с помощью SIGWINCH
. Это заставит readline перерисовать подсказку. Пример:
$ (sleep 2; echo foo; sleep 2; kill -WINCH "$$") &
[1] 2295
<immediately press l and s; the "foo" text will mess up the current line>
$ lsfoo
<after 1s the prompt is redrawn again without the parasitic text>
$ ls
ioctl(TIOCSTI)
Еще один трюк заключается в том, чтобы привязать некоторый неиспользуемый ключ к redraw-current-line
, как обычно, а затем имитировать этот ключ с помощью TIOCSTI
ioctl (он по-прежнему работает без дополнительных привилегий на текущем tty в Linux. ). Но для этого вам понадобится C, perl, python и т. д.:
$ bind '"\xff": redraw-current-line'
$ redraw_current_line(){ perl -e 'ioctl STDIN, 0x5412, $x = "\xff"' </dev/tty; }
$ (sleep 2; echo foo; sleep 2; redraw_current_line) &
.... same as in SIGWINCH example...
Этот последний трюк доступен только для Linux -; номер ioctl для TIOCSTI
в другой системе, которая может его поддерживать, отличается.
Обратите внимание,:если кто-то считает, что я должен require "sys/ioctl.h"
вместо того, чтобы запрограммировать номер ioctl:Нет, не должен . Даже если это случайно сработает в этом случае, perl h2ph
не работает, и файлы .ph
не должны не использоваться:
$ perl -e 'require "sys/ioctl.ph"; printf "%x\n", TIOCGPTN()'
80005430
$ cc -include stdio.h -include sys/ioctl.h -xc - \
<<<'int main(){printf("%lx\n",TIOCGPTN);}' -o /tmp/foo && /tmp/foo
80045430
Обратите внимание на дополнительный бит в реальной вещи:80045430
!=80005430