ВидеоКонф(ВКС)  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

System cmd

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

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

System cmd

Сообщение jacuba » 09 ноя 2011, 09:52

Добрый день.
Прошу помощи или разъяснений.
Стоит задача построить небольшой опросник на *. Реализую следующим образом:
Код: выделить все
...
[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
jacuba
 
Сообщений: 25
Зарегистрирован: 24 мар 2011, 10:37

Re: System cmd

Сообщение zzuz » 09 ноя 2011, 10:05

Зачем они глобально назначаются?
Линия24 - Системы Массового Телефонного Обслуживания
Аватар пользователя
zzuz
 
Сообщений: 1658
Зарегистрирован: 21 сен 2010, 13:33

Re: System cmd

Сообщение gosha » 09 ноя 2011, 10:14

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

?
gosha
 
Сообщений: 370
Зарегистрирован: 06 сен 2010, 17:41

Re: System cmd

Сообщение Vlad1983 » 09 ноя 2011, 10:18

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

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

ls -l /home/user/opros/result.sh
ps axu | grep asterisk
?
ЛС: @rostel
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: System cmd

Сообщение jacuba » 09 ноя 2011, 10:26

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
jacuba
 
Сообщений: 25
Зарегистрирован: 24 мар 2011, 10:37

Re: System cmd

Сообщение Vlad1983 » 09 ноя 2011, 10:35

exten => 2,n,System(/bin/bash /home/user/opros/result.sh ${AGE} ${SMOKE} ${WORLD} ${DANCE})
ЛС: @rostel
Vlad1983
 
Сообщений: 4251
Зарегистрирован: 09 авг 2011, 11:51

Re: System cmd

Сообщение gosha » 09 ноя 2011, 10:43

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

ls -ld /home/user
ls -ld /home/user/opros
ps axu | grep aster
gosha
 
Сообщений: 370
Зарегистрирован: 06 сен 2010, 17:41

Re: System cmd

Сообщение jacuba » 09 ноя 2011, 10:58

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})

безопасно ли пароль от базы хранить в диалпалне?
jacuba
 
Сообщений: 25
Зарегистрирован: 24 мар 2011, 10:37

Re: System cmd

Сообщение SolarW » 09 ноя 2011, 12:42

А зачем
Код: выделить все
exten => 2,n,System(mysql.....

Вроде в диалплане есть команды работы с базой?

Типа вот так
viewtopic.php?p=11570#p11570
Аватар пользователя
SolarW
 
Сообщений: 1331
Зарегистрирован: 01 сен 2010, 14:21
Откуда: Днепропетровск, Украина

Re: System cmd

Сообщение gosha » 09 ноя 2011, 12:46

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


...по колесам попиннали, стекло протерли, осталось габариты проверить...

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

Код: выделить все
        echo "$1 $2 $3 $4" > /home/user/opros/test.txt



?
gosha
 
Сообщений: 370
Зарегистрирован: 06 сен 2010, 17:41

След.

Вернуться в Разработка

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

cron
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH