LINUX.ORG.RU

Парсинг .json

 ,


0

1

Добрый день. Пытаюсь спарсить лог и выбрать с него события только высокого уровня. Если запустить команду в консоли linux, то все работает: tail -f «/var/ossec/logs/alerts/alerts.json» | jq -c ‘select(.rule.level > 10)’ >> /var/ossec/logs/alerts/log_monitor_high_level.json

Однако если добавить ее в bash скрипт, то ничего не записывается в /var/ossec/logs/alerts/log_monitor_high_level.json. Самое интересное в том, что если понизить фильтр select(.rule.level > 9) и ниже, то события до 11 уровня записываются в /var/ossec/logs/alerts/log_monitor_high_level.json.

У кого-то есть предположения с чем может быть связана проблема?



Последнее исправление: Zhbert (всего исправлений: 1)

Звучит как мистика. Такого не должно быть. Скрипт точно запускается? Выполняется под тем же пользователем, из того же окружения?

Разницы между командой и скриптом в идентичном окружении не должно быть.

anonymous
()
Ответ на: комментарий от MadMax

Я совсем забыл про TTY. Команды, для которых TTY не является основным интерфейсом, но которые меняют поведение в зависимости от наличия оного - зло. Всё равно что менять поведение в зависимости того, запущена ли команда в терминале, основанном на qt или GTK.

anonymous
()

Сколько раз с таким сталкивался - бесит неимоверно. На самом деле очень иногда с таким помогает #!/bin/sh или #!/bin/dash . А так да надо каждый раз разбираться, какая программа самая умная и как у неё эти мозги отключать.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)