API ISPmanager

API — это программный интерфейс, который позволяет управлять любым приложением через набор команд и функций. Продукты ISPsystem имеют мощный интерфейс API. С помощью утилиты mgrctl можно автоматизировать рутинные действия панели. В данной статье рассмотрим несколько примеров использования API панели ISPmanager.

Содержание

ISPmanager 6

 

На сайте разработчиков есть обширная документация API ISPmanager 6 с описанием методов вызова функций панели управления с помощью API.

Рассмотрим некоторые примеры. Для этого необходимо подключиться к серверу с установленной панелью ISPmanager по SSH.

 

Получить список всех WWW доменов

Введем в терминале следующую команду:

# /usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain

Получим информацию о доменах в панели ISPmanager в таком виде:

id=1 name=myfirstsite.fvds.ru owner=www-root docroot=/var/www/www-root/data/www/myfirstsite.fvds.ru php= php_mode=php_mode_mod php_version=7.4.3 (native) handler=PHP Apache 7.4.3 (native) active=on analyzer=off ipaddr=1.2.3.4 webscript_status= database=db_not_assigned
id=2 name=mysecondsite.fvds.ru owner=www-root docroot=/var/www/www-root/data/www/mysecondsite.fvds.ru php= php_mode=php_mode_mod php_version=7.4.3 (native) handler=PHP Apache 7.4.3 (native) active=on analyzer=off ipaddr=1.2.3.4 webscript_status= database=db_not_assigned

Здесь отображена основная информация о доменах: доменное имя, владелец, корневая директория, IP и пр. Чтобы получить только список доменов, можно использовать сортировку:

/usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain | awk '{print $2}' | awk -F = '{print $2}'

myfirstsite.fvds.ru
mysecondsite.fvds.ru

Таким образом, видим только доменные имена.

Получить список всех WWW доменов, принадлежащих определенному пользователю

# /usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain  su=user  | awk '{print $2}' | awk -F = '{print $2}'

Вместо user нужно указать владельца домена, например, www-root.
В случае, если такого пользователя в системе нет, получим ошибку ERROR auth(usernotfound): Authorization error (либо Authorization при использовании утилит sed и awk из примера выше).

В документации по работе с API ISPmanager описано получение списка WWW доменов на примере языков PHP, Perl и Python.

Добавление доменов

С помощью такой команды можно добавить домен (замените mytestdomain.fvds.ru на свой домен, www-root — на своего владельца, при необходимости также можно задать другие параметры):

/usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain.edit name=domain.com aliases=www.domain.com php=on php_cgi_version=native php_enable=on php_mode=php_mode_mod owner=user email=webmaster@domain.com sok=ok

В случае успеха получим ответ:

mail=webmaster@domain.com sok=ok
OK
id=mytestdomain.fvds.ru
id=mytestdomain.fvds.ru

В веб-интерфейсе ISPmanager видим новый домен:

Обновить все домены на внешних серверах имен

Смотрим документацию и получаем следующую команду:

# for i in `/usr/local/mgr5/sbin/mgrctl -m ispmgr domain | awk '{print $1}' | awk -F = '{print $2}'`; do /usr/local/mgr5/sbin/mgrctl -m ispmgr domain.fix elid=$i;done

Функция domain.fix описана в документации. В случае неудачи получите ошибку: 

ERROR missed(function): Failed to find the 'domain.fix' function. The associated module is missing

Следует учесть, что документация ISPmanager сформирована автоматически и реальные имена функций могут отличаться. Если вы получили вышеуказанную ошибку — можно выполнить нужную процедуру в веб-интерфейсе ISPmanager, а затем посмотреть в логах, какая функция была выполнена.

Чтобы узнать функцию, с помощью которой ISPmanager обновляет информацию о доменах на серверах имен — вручную проведем данную процедуру. Переходим в веб-интерфейсе в раздел Управление DNS, выбираем любой домен и передаём в DNSmanager с помощью кнопки Передать в DNSmanager.

Идем в логи и смотрим (можно прямо в панели: Мониторинг и журналы — Журнал операций, находим операцию slaveserver.fix, открываем и видим одноименную функцию.

Получается, что команда в нашем случае будет выглядеть так:

# for i in `/usr/local/mgr5/sbin/mgrctl -m ispmgr domain | awk '{print $1}' | awk -F = '{print $2}'`; do /usr/local/mgr5/sbin/mgrctl -m ispmgr slaveserver.fix elid=$i;done

В ответ мы ничего не получим, однако в логах увидим, что данные были обновлены в DNSmanager.

Обновить информацию на серверах имен для конкретного домена можно так:

# /usr/local/mgr5/sbin/mgrctl -m ispmgr slaveserver.fix elid="myfirstsite.fvds.ru"

Параметр elid — элемент name из функции domain (согласно документации).

Проверяем так:

# /usr/local/mgr5/sbin/mgrctl -m ispmgr domain

name=myfirstsite.fvds.ru displayname=myfirstsite.fvds.ru user=www-root dtype=master dnssecstatus=off state_0=

name=mysecondsite.fvds.ru displayname=mysecondsite.fvds.ru user=www-root dtype=master dnssecstatus=off state_0=

name=mytestdomain.fvds.ru displayname=mytestdomain.fvds.ru user=www-root dtype=master dnssecstatus=off state_0=

Отключить php для всех доменов

# for i in `/usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain | awk '{print $2}' | awk -F = '{print $2}'`; do /usr/local/mgr5/sbin/mgrctl -m ispmgr webdomain.edit php=off elid=$i;done

В выводе будет много информации о доменах. Видим там нужную строку под каждым доменом:

id=3
name=mytestdomain.fvds.ru
…
php=off
…

ISPmanager 5

Подробную инструкция по настройке API для ISPmanager 5 вы сможете найти в документации.

Этот материал был полезен?