SolarW писал(а):Прописывание запуска скрипта в кронтабе с выводом результатов в > /tmp/script.log тоже не диагностировало проблему.
SolarW писал(а):Прописывание запуска скрипта в кронтабе с выводом результатов в > /tmp/script.log тоже не диагностировало проблему.
Код: Выделить всё
dbuser - user
dbpass - password
dbname - asteriskcdrdb
zapr - select port as 'Модем',balans as 'Баланс',time as 'Дата Время' from (select bin boot dev etc home lib lost+found media mnt opt proc root sbin selinux srv sys tftpboot tmp usr var from (select max(time) as last_date,port as prt from gsmbalans group by port) as tbl1 JOIN gsmbalans where tbl1.last_date=gsmbalans.time and tbl1.prt=gsmbalans.port) as itog where port<>'' order by port;
Код: Выделить всё
zapr="select port as 'Модем',balans as 'Баланс',time as 'Дата Время' \
from (select * from (select max(time) as last_date,port as prt \
from ${tbname} group by port) as tbl1 \
JOIN ${tbname} where tbl1.last_date=${tbname}.time and tbl1.prt=${tbname}.port) as itog where port<>'' order by port;"
Данное перенаправление не учитывает поток stderr, а 2>&1 указывает на добавление оного к log-выводу скрипта. В stderr программы выводят сообщения об ошибках, так как особенностью данного потока является полное отсутствие буферирования.SolarW писал(а):Не, думаю Sfinx что-то другое имел в виду, просто перенаправлять я пробовал, цитирую первое сообщение темыSolarW писал(а):Прописывание запуска скрипта в кронтабе с выводом результатов в > /tmp/script.log тоже не диагностировало проблему.
Может он и ругается, но мы не видим stderr, а проверять return value не хотим, как бы клинч получается. Боюсь, я тут уже не помощникSolarW писал(а):Sfinx писал(а):А последовать моему второму совету ?Учитывая что ручной запуск выполняется без ошибок что-то у меня сомнения в необходимости анализа кодов возврата.Sfinx писал(а):Ну про проверку shell return code монитора я вообще молчу.
Перед выполнением запроса через echo вывести переменные передающиеся запросу? Попробую но думаю что если бы они неправильно передавались mysql при запуске ругался бы какими-нибудь ошибками типа неправильный пароль или база данных...Sfinx писал(а):Также не помешает вставка отладочной печати дабы убедиться что все переменные в скрипте ресолвятся верно.
Был бы интересен пример того же самого на php с прямым запросом к базе.Vlad1983 писал(а):накой в файлы писать когда можно сразу из БД читать?
Код: Выделить всё
" dongle1 KS +380981234567 КИЕВСТАР *111#"
" dongle2 MTS +380951234567 МТС *110*10*01#"
" dongle3 UTEL +380911234567 Укртелеком *100#"
" dongle4 LF +380931234567 Лайф *111#"
Код: Выделить всё
######## Варианты парсинга баланса для разных операторов #######################
# Результат разбора должен быть в виде:
# 28.04.2012 08:30:17;52.70;000101
################################################################################
# Оператор КИЕВСТАР
if [ "${oper}" = "KS" ]
then cat $opermsg | grep $num| grep USSD| grep 'Na rahunku'| sed -r 's/(: Na rahunku: | - | grn. )/;/g'| awk -F ";" '{print $1";"$4";"$3}' | tail -n $tn >>/tmp/tmpallbalans
fi
# Оператор МТС
if [ "${oper}" = "MTS" ]
then cat $opermsg | grep $num| grep USSD| grep 'Na osobovomu rakhunku'| sed -r "s/(: Na osobovomu rakhunku | - |: avans |5 hrn.)/;/g"| awk -F ";" '{print $1";"$5";"$3}'| tail -n $tn >>/tmp/tmpallbalans
fi
# Оператор Укртелеком
if [ "${oper}" = "UTEL" ]
then cat $opermsg | grep $num| grep USSD| grep 'Vash balans'| sed 's/,/./g'| sed "s/'//g"|sed -r "s/(: Vash balans:zagalnyi | - |; paketnyi )/;/g"| awk -F ";" '{print $1";"$4";"$3}'| tail -n $tn >>/tmp/tmpallbalans
fi
# Оператор Лайф
if [ "${oper}" = "LF" ]
then cat $opermsg | grep $num| grep USSD| grep ': Balans'| sed 's/,/./g'| sed -r 's/(: Balans | - |hrn. )/;/g'| awk -F ";" '{print $1";"$4";"$3}' | tail -n $tn >>/tmp/tmpallbalans
fi
################################################################################