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 protected] sok=ok
В случае успеха получим ответ:
[email protected] 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 вы сможете найти в документации.