Интерфейс командной строки

Некоторые расширения могут использовать утилиты командной строки, которые Plesk предоставляет администраторам, как альтернативу выполнения операций в графическом интерфейсе. Интерфейс командной строки (Command-Line Interface, CLI) предоставляет те же функции, что и XML API, но результат выполнения той или иной операции выдается в виде простого текста, а не дерева XML. Более подробную информацию об утилитах командной строки смотрите в следующих документах:

Для выполнения вызова CLI используйте класс pm_ApiCli.

Выполнение утилит

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

Его первый аргумент – имя утилиты, а второй – массив опций и их значений. Третий необязательный аргумент указывает, какого рода информацию о результатах выполнения утилиты надо получить.

Примечание. В версиях Plesk 12.5 и ниже вызов pm_ApiCli::call может быть запущен только через скрипты командной строки и не может быть запущен через операции в интерфейсе Plesk.

Например: Получение информации о лицензионном ключе

Следующий пример позволяет получить информацию о текущем лицензионном ключе Plesk:

$result = pm_ApiCli::call('keyinfo', ['-l']);
var_dump($result);

Вывод должен выглядеть примерно так:

array(3) {
 ["code"] =>
 int(0)

 ["stdout"] =>
 string(447) "plesk_key_id: 0
 license_update_date: 20350101
 lim_date: 20120501
 lim_cl: -1
 ...
 "

 ["stderr"] =>
 string(0) ""
}

В более сложных ситуациях разделите вызов по аргументам и добавьте каждый аргумент как элемент массива. Например:

customer --create johnusername -name "John Doe" -passwd sample -country US -notify false

должен быть преобразован к:

pm_ApiCli::call('customer', ['--create', 'johnusername', '-name', 'John Doe', '-passwd', 'sample', '-country', 'US', '-notify', 'false']);
Например: Обработка результатов выполнения утилиты

Можно указать, какая именно информация о выполнении утилиты должна быть получена с помощью вызова. Для этого укажите тип возвращенного значения в последнем аргументе метода call(), например:

$result = pm_ApiCli::call('license', ['--check-installed-license'], pm_ApiCli::RESULT_CODE);

В этом примере переменной $result будет присвоен код ошибки, созданный в результате выполнения утилиты 'license' с параметром '--check-installed-license', который равен ‘0’, если установленный код лицензии является корректным, и ‘1’ – в противном случае.

Все доступные типы возвращаемых значений описаны здесь: pm_ApiCli Constants.

Примечание. Если не указано ни одного возвращаемого значения, будет возвращено значение по умолчанию RESULT_EXCEPTION. До Plesk 17 по умолчанию возвращалось значение RESULT_FULL. Возможно, потребуется отразить это изменение в расширениях, одновременно поддерживающих как версии Plesk 12.5 и выше, так и версии Plesk 17 и выше.

Если в результате выполнения утилиты возвращается код ошибки ‘0’, при использовании RESULT_EXCEPTION будет возвращен тот же массив значений, что и при использовании RESULT_FULL (code, stdout, stderr). Но если результирующий код ошибки не равен ‘0’, использование RESULT_EXCEPTION приводит к выдаче исключения (pm_Exception_ResultException).

Выполнение привилегированных утилит

Папка /<product-root>/admin/bin/ содержит утилиты, которые запускаются с более высоким уровнем привилегий. Кроме того, в самом расширении могут быть использованы некоторые утилиты, которые должны запускаться с более высоким уровнем привилегий. Такие утилиты помещаются в папку /<product-root>/admin/bin/modules/$MODULE_NAME.

Примечание. В версиях Plesk 12.5 и выше привилегированные утилиты доступны только в Plesk для Linux.

Вы можете запускать такие утилиты с помощью следующего метода:

Например:

$result = pm_ApiCli::callSbin('my-utility');
var_dump($result);

По умолчанию метод будет искать утилиту my-utility в папке /<product-root>/admin/bin/modules/$MODULE_NAME. Если утилита там не найдена, метод будет искать ее в папке /usr/local/psa/admin/bin/.

Примечание. Так же как и call(), callSbin() может иметь необязательный третий аргумент, который определяет, какого рода информацию о результатах выполнения утилиты надо получить.

 

Leave your feedback on this topic here

If you have questions or need support, please visit the Plesk forum or contact your hosting provider.
The comments below are for feedback on the documentation only. No timely answers or help will be provided.