Выполнение команды на сервере (Linux)

Started by mOba, June 16, 2020, 09:34:24 AM

Previous topic - Next topic

mOba

Добрый день  ;)

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

У меня есть php скрипт для отправки SMS (/home/netxms/Documents/sms/sms.php) в него я передаю два параметра arg1(Текст СМС) и arg2(Телефон). Сделал действие как на скриншоте:

php /home/netxms/Documents/sms/sms.php '%M' 'NOMER'


Но ничего не выполняется, смс не приходит, через консоль сервера этот скрипт отрабатывает и смс летит.

В документации не очевидно написано, можно ли так выполнять или нет. Подскажите смогу ли я вообще такое реализовать?

Filipp Sudanov

Нужно проверить, но скорее всего на windows действия запускаются через вызов CreateProcess(), в этом случае файл ищется в path, но расширение автоматом не подставляется. Попробуейте php.exe или если не поможет, то написать его с полным путем.

mOba

У меня Linux (в шапке темы указано  8) )
Получилось вызывать скрипт вот такой командой:

nxget localhost Test_SMS '%m %n' 'NOMER'

где Test_SMS - это в файле nxagentd.conf строка ExternalParameterShellExec = Test_SMS:php /home/netxms/Documents/sms/sms.php для вызова скрипта.

Но проблема что не передаётся в скрипт параметры. Как сделать подскажите передачу параметров ошибки и номера телефона?

Victor Kirhenshtein

Для ExternalParameterShellExec подстановку параметров можно делать через $1, $2, и т.д. Например

ExternalParameterShellExec = Test_SMS:php /home/netxms/Documents/sms/sms.php "$1" "$2"

Серверная команда тоже должна работать. Посмотрите лог сервера на уровне 5 - должны быть записи вида "Executing command ..." и "RunCommandThread: failed to execute command ..." при ошибке.

mOba

Quote from: Victor Kirhenshtein on June 17, 2020, 09:36:53 AM
Для ExternalParameterShellExec подстановку параметров можно делать через $1, $2, и т.д. Например

ExternalParameterShellExec = Test_SMS:php /home/netxms/Documents/sms/sms.php "$1" "$2"

Серверная команда тоже должна работать. Посмотрите лог сервера на уровне 5 - должны быть записи вида "Executing command ..." и "RunCommandThread: failed to execute command ..." при ошибке.

Какая-то странность, вчера не работала команда описанная в первом посте, а сегодня уже работает и шлёт всё корректно! Возможно из-за того что не был установлен агент ;)

Так что вариант php /home/netxms/Documents/sms/sms.php '%M' 'NOMER' работает уже, всем спасибо!

Filipp Sudanov

 8)

Ну вообще-то оно должно работать така, как у вас сконфигурено на изначальном скриншоте.

Давайте посмотрим дебаг 7 уровня в момент запуска действия. Уровень отладки можно менять при запущенном сервере
nxadm -c "debug 7"

Посмотреть текущий уровень можно так:
nxadm -c "debug"