Страница 1 из 2

System()

Добавлено: 26 май 2013, 19:03
teejee
Добрый день

дано: астриск и роутерборд
Задача: отправить команду микротику через телефон (например перезагрузить)

как делаю:
[from-internal]
exten=>*11,1,Answer()
exten=>*11,n,System(ssh admin@192.168.25.1 system reboot)
exten=>*11,n,Hangup()


проблема: в окружении ЦентОса ssh admin@192.168.25.1 system reboot все отрабатывает, микротик ребутится
а через *11 - ниже лог и перезагрузки не происходит
в Torch видно что пакеты приходят с астериска




- Executing [*11@from-internal:1] Answer("SIP/1921-00000745", "") in new stack
-- Executing [*11@from-internal:2] System("SIP/1921-00000745", "ssh admin@192.168.25.1 system reboot") in new stack
-- Executing [*11@from-internal:3] Hangup("SIP/1921-00000745", "") in new stack
== Spawn extension (from-internal, *11, 3) exited non-zero on 'SIP/1921-00000745'
-- Executing [h@from-internal:1] Macro("SIP/1921-00000745", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/1921-00000745", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("SIP/1921-00000745", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/1921-00000745", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,15)
-- Executing [s@macro-hangupcall:15] NoOp("SIP/1921-00000745", "MEETME_RECORDINGFILE=") in new stack
-- Executing [s@macro-hangupcall:16] GotoIf("SIP/1921-00000745", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,18)
-- Executing [s@macro-hangupcall:18] NoOp("SIP/1921-00000745", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:19] GotoIf("SIP/1921-00000745", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,25)
-- Executing [s@macro-hangupcall:25] NoOp("SIP/1921-00000745", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:26] GotoIf("SIP/1921-00000745", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,29)
-- Executing [s@macro-hangupcall:29] GotoIf("SIP/1921-00000745", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,32)
-- Executing [s@macro-hangupcall:32] GotoIf("SIP/1921-00000745", "1?theend") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] Hangup("SIP/1921-00000745", "") in new stack
== Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/1921-00000745' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/1921-00000745'

Re: System()

Добавлено: 26 май 2013, 19:51
Vlad1983
видимо asterisk не знает где искать ключи для авторизации

Re: System()

Добавлено: 26 май 2013, 20:47
teejee
необязательно перезагружать, можно любую команду
например отключать впн интрефейс, аля красная кнопка

Re: System()

Добавлено: 26 май 2013, 23:19
Aven
Запускайте скрипт.
А в скрипте уже что хотите делайте и отлаживайте его без Астериска.

Re: System()

Добавлено: 26 май 2013, 23:28
ded
echo "ssh admin@192.168.25.1 system reboot" > reboot_microtic.sh
chmod 755 reboot_microtic.sh

exten => *11,1,System(reboot_microtic.sh)

Re: System()

Добавлено: 27 май 2013, 17:22
teejee
echo "ssh admin@192.168.25.1 system reboot" > /root/reboot_mikrotic.sh
chmod 755 /root/reboot_microtik.sh

exten => *11,1,System(/root/reboot_microtic.sh)

1. Эффект такой же....
в окружении ликукса все отрабатывает
а через астериск нет
2. делаю exten => *11,1,System(sudo /root/reboot_microtic.sh)
долго думает на Executing [*11@from-internal:1] System("SIP/1921-0000232d", "/root/reboot_mikrotik.sh") in new stack И ничего не происходит




Executing [*11@from-internal:1] System("SIP/1921-0000232d", "/root/reboot_mikrotik.sh") in new stack
-- Auto fallthrough, channel 'SIP/1921-0000232d' status is 'UNKNOWN'
-- Executing [h@from-internal:1] Macro("SIP/1921-0000232d", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/1921-0000232d", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("SIP/1921-0000232d", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/1921-0000232d", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,15)
-- Executing [s@macro-hangupcall:15] NoOp("SIP/1921-0000232d", "MEETME_RECORDINGFILE=") in new stack
-- Executing [s@macro-hangupcall:16] GotoIf("SIP/1921-0000232d", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,18)
-- Executing [s@macro-hangupcall:18] NoOp("SIP/1921-0000232d", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:19] GotoIf("SIP/1921-0000232d", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,25)
-- Executing [s@macro-hangupcall:25] NoOp("SIP/1921-0000232d", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:26] GotoIf("SIP/1921-0000232d", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,29)
-- Executing [s@macro-hangupcall:29] GotoIf("SIP/1921-0000232d", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,32)
-- Executing [s@macro-hangupcall:32] GotoIf("SIP/1921-0000232d", "1?theend") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] Hangup("SIP/1921-0000232d", "") in new stack
== Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/1921-0000232d' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/1921-0000232d'

Re: System()

Добавлено: 27 май 2013, 17:38
Vlad1983
попробуйте так
exten => *11,1,Set(foo=${SHELL(/root/reboot_microtic.sh)})
same=> n,NoOp(${foo})

Re: System()

Добавлено: 27 май 2013, 17:50
teejee
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
-- Executing [*11@from-internal:1] Set("SIP/1921-0000249e", "foo=") in new stack
-- Executing [*11@from-internal:2] NoOp("SIP/1921-0000249e", "") in new stack
-- Auto fallthrough, channel 'SIP/1921-0000249e' status is 'UNKNOWN'
-- Executing [h@from-internal:1] Macro("SIP/1921-0000249e", "hangupcall") in new stack
-- Executing [s@macro-hangupcall:1] GotoIf("SIP/1921-0000249e", "1?endmixmoncheck") in new stack
-- Goto (macro-hangupcall,s,9)
-- Executing [s@macro-hangupcall:9] NoOp("SIP/1921-0000249e", "End of MIXMON check") in new stack
-- Executing [s@macro-hangupcall:10] GotoIf("SIP/1921-0000249e", "1?nomeetmemon") in new stack
-- Goto (macro-hangupcall,s,15)
-- Executing [s@macro-hangupcall:15] NoOp("SIP/1921-0000249e", "MEETME_RECORDINGFILE=") in new stack
-- Executing [s@macro-hangupcall:16] GotoIf("SIP/1921-0000249e", "1?noautomon") in new stack
-- Goto (macro-hangupcall,s,18)
-- Executing [s@macro-hangupcall:18] NoOp("SIP/1921-0000249e", "TOUCH_MONITOR_OUTPUT=") in new stack
-- Executing [s@macro-hangupcall:19] GotoIf("SIP/1921-0000249e", "1?noautomon2") in new stack
-- Goto (macro-hangupcall,s,25)
-- Executing [s@macro-hangupcall:25] NoOp("SIP/1921-0000249e", "MONITOR_FILENAME=") in new stack
-- Executing [s@macro-hangupcall:26] GotoIf("SIP/1921-0000249e", "1?skiprg") in new stack
-- Goto (macro-hangupcall,s,29)
-- Executing [s@macro-hangupcall:29] GotoIf("SIP/1921-0000249e", "1?skipblkvm") in new stack
-- Goto (macro-hangupcall,s,32)
-- Executing [s@macro-hangupcall:32] GotoIf("SIP/1921-0000249e", "1?theend") in new stack
-- Goto (macro-hangupcall,s,34)
-- Executing [s@macro-hangupcall:34] Hangup("SIP/1921-0000249e", "") in new stack
== Spawn extension (macro-hangupcall, s, 34) exited non-zero on 'SIP/1921-0000249e' in macro 'hangupcall'
== Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/1921-0000249e'
и на микротик никакой трафик не прилетает

п.с.
везде фигурирует название reboot_mikrotik.sh
Ошибочно копи пастом возпользовался

Re: System()

Добавлено: 27 май 2013, 18:01
Vlad1983
добавьте оба варианта

strace -p PID_asterisk-a -f -s 128 -tt -o trace.log
звоните *11
желательно при полном отсутствии нагрузки
лучше зарезать фаерволом все лишнее, убить все пиры кроме одного, с которого будете звонить
иначе навалит много лишнего

смотрите полученный трейс системных вызовов

Re: System()

Добавлено: 27 май 2013, 18:03
ded
teejee писал(а):2. делаю exten => *11,1,System(sudo /root/reboot_microtic.sh)
долго думает на Executing [*11@from-internal:1] System("SIP/1921-0000232d", "/root/reboot_mikrotik.sh") in new stack И ничего не происходит
Ну да....