"Останавливаете астриск. запускаете его с консоли asterisk -vvvvgc после этого у вас на консоли будут ошибки выданные скриптом. наслаждаетесь." Пробовал раньше, что-то ничего я не увидел. Сейчас еще раз попробую. С дебагом скриптов знаком, и думаю что все таки это не скрипт, хотя бы из-за того что этот скрипт взят с другого Астериска и там он работает. Буду проверять еще раз через asterisk -vvvvgc. Спасибо!
vlad.v ( 2013-10-17 10:51:37 +0400 )редактироватьНаверное запускал asterisk -vvvvgc, без предварительной остановки Астериска. Сейчас же действительно увидел как отрабатывает скрипт! И проблема в том, что он Работает!!!, но стоило мне выйти с режима "gc" и сделать "sudo service aterisk start" и зайти в cli командой asterisk -rvvv, как скрипт снова не работает, я уже не делаю акцент на переменную или другую мистику, просто с gc он работает, а при стандартом запуске - нет! Уже бубен порвал!!
vlad.v ( 2013-10-17 12:05:38 +0400 )редактироватьСам спросил, сам ответил. Скрипт успешно выполняется при запуске asterisk -vvvvgc, из-за того, что Астериск выполняет его от РУТа. При стандартном запуске, он выполняется от Asterisk. Но я все равно не могу понять чего он не может его выполнить, ведь chmod стоит 777...
vlad.v ( 2013-10-17 13:32:54 +0400 )редактироватьа тело скрипта можно? просто может там есть какието специфичные команды которые только root может делать.
romariosar ( 2013-10-17 14:54:29 +0400 )редактироватьВот скрипт:
echo $1 > code.sat
#выделяем буквенный код
l1=head -c1 code.sat
l2=head -c2 code.sat |tail -c1
latpass=echo $l1$l2
#выделяем пароль
X=head -c3 code.sat |tail -c1
Y=head -c8 code.sat |tail -c1
pass=echo $X$Y
#сравниваем буквенный пароль
if [[ "$latpass" == SA ]]
then
answ=ok
echo $answ
else
answ=`echo "Bad_pass"`
echo $answ
rm code.sat
exit 1
fi
#сравниваем пароль
if [ $pass = 77 ]
then
answ=ok
echo $answ
else
answ=`echo "Bad_pass"`
echo $answ
rm code.sat
exit 1
fi
exit 0
vlad.v ( 2013-10-17 15:15:02 +0400 )редактироватьecho $1 > code.sat
а прав сюда писать хватает ?
Selinux не включили случайно на своем дебиане ?
komrad123 ( 2013-10-17 17:23:26 +0400 )редактироватьзапускайте астриск от пользователя астриск. как у вас тсртовый скрипт запускает. ну как дети ейбогу.
meral ( 2013-10-17 18:06:43 +0400 )редактироватьСпасибо всем, отдельное спасибо komrad123! Совсем забыл что при запуске с консоли и при запуске с Астериск путь к файлу code.sat будет разным. И да, прав действительно не хватает для записи в файл. Выход простой:
codefile=/home/serv/script/smscode.sat
#разбираем полученный код на пароль и код
echo $1 > $codefile
#выделяем буквенный код
l1=head -c1 $codefile
l2=head -c2 $codefile |tail -c1
latpass=$l1$l2
И все! Вот только одного не могу понять, как этот же скрипт сейчас работает на другой АТС с тем же "echo $1 > code.sat" Ну да ладно!! Спасибо всем еще раз!!
vlad.v ( 2013-10-17 18:52:32 +0400 )редактироватьна другой атс он может записать в том директории из котоого запускается астериск. но вот видите, вы приобрели безценные навыки по дебагу.. применять только не забывайте.
meral ( 2013-10-18 00:27:00 +0400 )редактироватьДействительно бесценный! Всегда говорил что теория без практики - бессмысленна.
vlad.v ( 2013-10-18 10:53:11 +0400 )редактировать
Убил 0.027 дня, но не понял конкретно, откуда и как появляется значение переменной ${SMS}
switch ( 2013-10-16 13:41:08 +0400 )редактироватьчто мешает проверить, что ${SMS} именно не передается, а не пустое? Set(answ=${SHELL(/home/serv/sms-code.sh 56611523)})
borispr ( 2013-10-16 16:24:26 +0400 )редактироватьswitch, Вы мне уже не раз помогали, насколько я помню, за что отдельное спасибо и низкий поклон, но так же могу сказать, что Вы троль еще тот! И если бы мой вопрос был тупым, я бы посмеялся вместе с Вами, в данном случае считаю троллинг не уместным. Или вы считаете, что я должен тут выложить весь диалплан, т.к. кроме переменной ${SMS}, там есть еще много разных. Я как бы не гуру, но и не полный нуб тоже. К borispr. Спасибо, до этого не додумался, проверю. Но все таки думаю что переменная не пустая, NoOp(${SMS}); показывает что переменная со значением.
vlad.v ( 2013-10-16 17:04:29 +0400 )редактироватьНастроение было, вот и высказал предложение посмотреть есть ли там переменная. Я с командой SHELL не работал. Попробуйте сделать su asterisk и под этим пользователем запустить скрипт.
switch ( 2013-10-17 15:40:00 +0400 )редактироватьпочему почему. потому что файл у вас в который пишится принадлежит руту. вы ж от рута тестили. надо либо права менять либо chown.
meral ( 2013-10-17 18:42:03 +0400 )редактировать