Команда System()


Назначение:

Выполнить команду операционной системы (Unix shell команду)

Описание:

System(command)

Выполняет команду операционной системы, используя системный вызов system().
Команда System() передает строку аргументов в неизменном виде для системного вызова system(3). Почитайте "man 3 system", где вы найдете, что можно делать, используя system(3):

system() выполняет команду ОС, заданную в качестве аргумента, вызывая шелл
/bin/sh -c command, и происходит вызов из system, когда вызываемая
программа закончит работу.

Следовательно, может использоваться вызов: System(command arg1 arg2 ит.д.) для передачи, вызываемой команде, аргументов.

Коды возврата

Возвращает -1 в случае неудачного выполнения заданной команды. Если во время выполнения команды возникла ошибка и существует команда с приоритетом n + 101, где 'n' приоритет текущей команды, тогда выполнение команд будет продолжено с этого приоритета. В остальных случаях возвращает 0.

Пример 1

exten => s,1,system(echo "${DATETIME} - ${CALLERID} - ${CHANNEL}" >> /var/log/asterisk/calls)

Пример 2

 ; dial 700 = перезагрузка Asterisk
 exten => 700,1,Playback(posix-restarting) ; "Restarting asterisk"
 exten => 700,2,Wait(1)
 exten => 700,3,System(/usr/sbin/asterisk -rx reload)
 exten => 700,4,Hangup

Пример 3

Пример анонса о поступившем вызове с использованием WinPopup

exten => 200,1,NoOp(${CALLERID} ${DATETIME})
exten => 200,2,System(/bin/echo -e "'Incoming Call From: ${CALLERID} \\r Received: ${DATETIME}'"|/usr/bin/smbclient -M target_netbiosname)
exten => 200,3,Dial,sip/sipuser|30|t
exten => 200,4,Congestion

Пример 4

; Печать информации о вызове на принтер, подключенный к ttyS1
exten => 200,1,NoOp(${CALLERID} ${DATETIME})
exten => 200,2,System(/bin/echo "'${CALLERID} ${DATETIME}'" > /dev/ttyS1)
exten => 200,3,Dial,sip/sipuser|30|t
exten => 200,4,Congestion

Ссылки по теме:

  • Asterisk cmd TrySystem: В отличие от System(), возвращает 0 во всех ситуациях
  • AGI: Asterisk Gateway Interface
  • Call notification: Пример создания pop-up сообщений