Стал вопрос как автоматизировать задачи по созданию\управлению хостинг-аккаунтами в панели управления WHM/Cpanel с помощью python. Немного поисков и экспериментов – все оказалось не так сложно с библиотекой python urllib2…
Все что нам нужно – это установленный python ( у меня версия 2.6), модуль urllib3, а также, хост с установленной панелью Cpanel для экспериментов.
Установка модуля python urllib3:
pip install urllib3
или
easy_install urllib3
просмотреть все доступные функции Cpanel API можно в документации Cpanel SoftwareDevelopmentKit/XmlApi. Пример будем делать на основе функции List Accounts — listaccts.
Авторизация с помощью логина и пароля WHM:
# hostname Вашего сервера с панелью Cpanel нужно будет прописать вместо unixblog.org.ua
import urllib2, base64
username = 'root'
passw = 'somepass'
req = urllib2.Request('https://unixblog.org.ua:2087/xml-api/listaccts', {}, {'Authorization':'Basic ' + base64.b64encode( username + ':' + passw ) } )
res = urllib2.urlopen(req)
print res.read()
Авторизация с помощью хэша(ключа) WHM, который можно создать в панели WHM в разделе “Setup Remote Access Key”:
#копируем созданный хэш из WHM на сервер с скриптом, неапример, в файл /my_hash
import urllib2
def RHash():
remote_key = "/my_hash"
f = open(remote_key, "r")
remote_key = f.read().replace("\n", "").rstrip()
auth = "WHM root:" + remote_key
return auth
remote_key = RHash()
url = "https://unixblog.org.ua:2087/xml-api/listaccts"
req = urllib2.Request(url, headers = {"Authorization": remote_key})
handle = urllib2.urlopen(req)
xml_data = handle.read()
print xml_data
Теперь можем использовать Cpanel API с помощью python, просто скопипастить код, изменить хост в url, путь к файлу хэша или пароль (в зависимости от выбранного метода) и должно выдать список аккаунтов, проверено. Дальше уже подставление и использование переменных, обработка результата xml – зависит от фантазии программиста 😉
Подскажите где найти на php api под cpanel ?
как где, в документации Cpanel 🙂 docs.cpanel.net/twiki/bin/view/SoftwareDevelopmentKit/ApiAuthentication
Thanks for the code! I’m using this in an automated python script and didn’t want to restore to using PHP!
welcome 😉
Что-то вы увлеклись. используете urllib2, ставите какой то urllib3 🙂
уже не помню если честно, давно было )
Но, кажется, библиотека urllib3 включает в себя urllib2.
это не от фанаря, все что писал проверил и тестировал на тот момент 😉