Скрипт, который вызывает ausearch, ведет себя по-разному при передаче данных на стандартный ввод - PullRequest
0 голосов
/ 29 января 2019

Может ли кто-нибудь объяснить, почему передача данных сценария bash через STDIN приведет к тому, что команда в сценарии НЕ будет работать?

Script:

#!/bin/bash
ausearch -i -a 1221217

Если я запускаю следующее, выводитсяРезультаты ausearch ожидаемые:

./au.sh

Однако, если я сделаю это:

echo "blah" | ./au.sh

, то получится:

<no matches>

Оба метода выполнения должны возвращать одинаковыерезультаты (поскольку ausearch жестко запрограммирован), но стандартный ввод, похоже, нарушает его.

Я НЕ спрашиваю, как читать данные стандартного ввода в скрипте bash.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Нет ничего плохого в bash, stdin или вашем скрипте.Поведение ausearch является причиной.

Утилита ausearch также может принимать входные данные от stdin, если входные данные являются необработанными данными журнала.

См. справочную страницу ausearch: http://man7.org/linux/man-pages/man8/ausearch.8.html

Ваш сценарий передает аргументы так, как должен, но из-за того, что канал ausearch читает только «бла» из стандартного ввода, а не файлы журнала по умолчанию и не дает совпадений.

Если вычтобы этого не произошло, используйте SOMEVAR = $ (cat / dev / stdin), чтобы захватить стандартный ввод в bash и передать его в ausearch или любую другую часть скрипта как $ SOMEVAR.

0 голосов
/ 29 января 2019

ausearch меняет свое поведение, если stdin - это канал.Если это так, он ищет через стандартный ввод, а не через журналы демонов аудита.Вы можете использовать --input-logs, чтобы заставить его читать из журналов.

echo "blah" | ausearch -i -a 1221217 --input-logs

Перенаправление stdin приведет к тому же концу.

#!/bin/bash
ausearch -i -a 1221217 < /dev/null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...