VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

System cmd

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

Модераторы: april22, Zavr2008

jacuba
Сообщения: 25
Зарегистрирован: 24 мар 2011, 09:37

System cmd

Сообщение jacuba »

Добрый день.
Прошу помощи или разъяснений.
Стоит задача построить небольшой опросник на *. Реализую следующим образом:

Код: Выделить всё

...
[vopros03]
exten => 0202,1,Background(opros/world)
exten => 0202,n,WaitExten(10)

exten => 1,1,Set(GLOBAL(WORLD)='YES')
exten => 1,n,goto(vopros04,0202,1)
exten => 2,1,Set(GLOBAL(WORLD)='NO')
exten => 2,n,goto(vopros04,0202,1)

[vopros04]
exten => 0202,1,Background(opros/dance)
exten => 0202,n,WaitExten(10)

exten => 1,1,Set(GLOBAL(DANCE)='YES')
exten => 1,n,System(/home/user/opros/result.sh ${AGE} ${SMOKE} ${WORLD} ${DANCE})
exten => 2,1,Set(GLOBAL(DANCE)='NO')
exten => 2,n,System(/home/user/opros/result.sh ${AGE} ${SMOKE} ${WORLD} ${DANCE})
exten => 2,n,Hangup()
Проблема в том, что имена переменных не передаются скрипту в качестве параметра и мне кажется, что скрипт вообще не выполняется.
Тело скрипта:

Код: Выделить всё

#! /bin/bash
if [ -z "${1}" ]; then
        echo "NONE
        NONE1
        NONE2" >> test.txt
else
        echo "$1 $2 $3 $4" > test.txt
fi
Если запускать его без параметров просто из консоли, то "NONE" появляется в файле, если же запускать из *, то файл test.txt остается пустым.

Если в астериске, вместо

Код: Выделить всё

exten => 2,n,System(/home/user/opros/result.sh ${AGE} ${SMOKE} ${WORLD} ${DANCE})
написать

Код: Выделить всё

exten => 2,n,System(echo ${AGE} ${SMOKE} ${WORLD} ${DANCE} >> /home/user/opros/test.txt)
то файл, text.txt заполняется

По задумке, в скрипте будет просто оператор INSERT, который будет добавлять все ответы в mysql.

Собственно сам вопрос, почему переменные не передаются в качестве параметра в астериске?

asterisk 1.6, Debian 6
Аватара пользователя
zzuz
Сообщения: 1658
Зарегистрирован: 21 сен 2010, 13:33
Контактная информация:

Re: System cmd

Сообщение zzuz »

Зачем они глобально назначаются?
Линия24 - Системы Массового Телефонного Обслуживания
gosha
Сообщения: 375
Зарегистрирован: 06 сен 2010, 17:41
Контактная информация:

Re: System cmd

Сообщение gosha »

проверить права на /home/user/opros/.... для пользователя под которым астериск запущен

?
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: System cmd

Сообщение Vlad1983 »

не проще INSERT прям из астера делать без всяких промежностей?

у мну работает такой способ передачи переменной \"${AGE}\" по другому даже не пробовал

ls -l /home/user/opros/result.sh
ps axu | grep asterisk
?
ЛС: @rostel
jacuba
Сообщения: 25
Зарегистрирован: 24 мар 2011, 09:37

Re: System cmd

Сообщение jacuba »

user@debian:~/opros$ ls -l /home/user/opros/

drwxr-xr-x 2 user user 4096 Ноя 9 10:31 output
-rwxrwxrwx 1 root root 131 Ноя 9 11:39 result.sh
-rwxrwxrwx 1 user user 0 Ноя 9 11:40 test.txt

В консоли астериска вижу:

Код: Выделить всё

Executing [2@vopros04:2] System("SIP/0201-00000003", "/home/user/opros/result.sh 'NO' '11' 'NO' 'NO'") in new stack
При попытке \"${AGE}\" :

Код: Выделить всё

Executing [2@vopros04:2] System("SIP/0201-00000004", "/home/user/opros/result.sh \"'NO'\" \"'11'\" \"'NO'\" \"'NO'\"") in new stack
Vlad1983
Сообщения: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: System cmd

Сообщение Vlad1983 »

exten => 2,n,System(/bin/bash /home/user/opros/result.sh ${AGE} ${SMOKE} ${WORLD} ${DANCE})
ЛС: @rostel
gosha
Сообщения: 375
Зарегистрирован: 06 сен 2010, 17:41
Контактная информация:

Re: System cmd

Сообщение gosha »

руссо партизано...

ls -ld /home/user
ls -ld /home/user/opros
ps axu | grep aster
jacuba
Сообщения: 25
Зарегистрирован: 24 мар 2011, 09:37

Re: System cmd

Сообщение jacuba »

Vlad1983 писал(а):xten => 2,n,System(/bin/bash /home/user/
Так то же не удалось.

Код: Выделить всё

user@debian:~$ ls -ld /home/user
drwxr-xr-x 90 user user 12288 Ноя  9 12:40 /home/user
user@debian:~$ ls -ld /home/user/opros
drwxrwxrwx 3 user user 4096 Ноя  9 12:27 /home/user/opros
user@debian:~$ ps axu | grep aster
root      9943  0.1  1.4  38564 14652 ?        Ssl  12:07   0:05 asterisk
root      9977  0.0  0.1   3700  1136 pts/4    S+   12:07   0:00 sudo asterisk -vvvvvr
root      9978  0.0  0.1   5496  1684 pts/4    S+   12:07   0:00 rasterisk vvvvvr
user     24106  0.0  0.0   3452   848 pts/6    S+   12:57   0:00 grep aster
Сразу из диалплана в базу добавлять получается, то есть частично проблема решена, спасибо.
Остается не ясным, почему мне не удалось запустить скрипт.

Еще вопрос, добавляю в базу я следующим образом:

Код: Выделить всё

exten => 2,n,System(mysql -u root -pmypass -N -e "INSERT INTO opros.main (age,smoke,travel,dance) VALUES (${AGE}, ${SMOKE}, ${WORLD}, ${DANCE})
безопасно ли пароль от базы хранить в диалпалне?
Аватара пользователя
SolarW
Сообщения: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: System cmd

Сообщение SolarW »

А зачем

Код: Выделить всё

exten => 2,n,System(mysql.....
Вроде в диалплане есть команды работы с базой?

Типа вот так
http://forum.asterisk.ru/viewtopic.php?p=11570#p11570
gosha
Сообщения: 375
Зарегистрирован: 06 сен 2010, 17:41
Контактная информация:

Re: System cmd

Сообщение gosha »

jacuba писал(а):.
Остается не ясным, почему мне не удалось запустить скрипт.
...по колесам попиннали, стекло протерли, осталось габариты проверить...

полный путь к output файлу указать

Код: Выделить всё

        echo "$1 $2 $3 $4" > /home/user/opros/test.txt

?
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH