LINUX.ORG.RU
решено ФорумAdmin

Скрип мониторинга состояния запросом в базу

 , ,


0

1

Проблема собственно вот в чем. Сам скрипт написал, но есть сомнения правильности. Идет проверка 2х условий из вывода запроса в базу.

if [[ $(hive -e "blablabla" | grep -A1 "OK" | awk 'NR==1')" = "OK" && $(hive -e "blablabla" | grep -A1 "OK" | awk 'NR==2')" = "1" ]]
Как в таком случае работает bash? Он 2 раза будет идти с запросом в базу? Если да, то подскажите как одним разом обойтись

Ответ на: комментарий от ashot
status="$(hive -e "blablabla" | grep -A1 "OK")"

После в IF эта переменная два раза ведь будет вызываться и соответственно запускать два раза запрос. Или я ошибаюсь?

achilles_85
() автор топика
Ответ на: комментарий от achilles_85
data="$(hive -e "blablabla")
if [[ *"OK"* == $data ]]; then
echo ok
else
echo not ok
fi

Как-то так.

Запиши ответ от базі в переменную сначала.

P.S.

А вообще єто не скрипт мониторинга, а херь какая-то.

Где обработка исключений (не подключились к базе, например)?

Разбей все на переменніе и сделай нормально, а не однострочник.

Круто віглядит, иногда работает, но через месяц сам забудешь, что оно такое. А через год другие не разберутся точно.

PunkoIvan ★★★★
()
Последнее исправление: PunkoIvan (всего исправлений: 1)
Ответ на: комментарий от PunkoIvan

Это я знаю. Мне больше интересно, как баш потом использует эту переменную. Он в каждом условии будет вызывать переменную и запускать пайп что справа от переменной или баш один раз выполняет команду и присваивает значение переменной слева? Я подозреваю, что второе не верно.

achilles_85
() автор топика
Ответ на: комментарий от anc

Так и есть, спасибо за ликбез. Такой вопрос. Мониторить надо статусы нескольких таблиц. Решил в case перечислить запросы, в качестве аргумента к скрипту будут названия страниц. Хочу в case написать так:

case $1 in
  first)
    data=$(blablaa)
    ;;
  second)
    data=$(blablaa)
    ;;
esac
А после уже в одном блоке выполнять IF написанный в первом посте, конечно с правкой на переменную. Такое реализуемо? Можно в каждом блоке конечно свой if написать, но громоздко как-то выглядит

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