В статье найдёте пример python скрипта для автоматизации добавления принтера в домене ALD Pro. Модифицируйте и улучшайте под свои нужды.
Окружение
* ALD Pro 2.4.1
Вопрос
Как добавить принтер в ALD Pro, не используя портал управления?
Ответ
Добавить принтер в ALD Pro, не используя портал управления, можно с помощью python-скрипта. Для этого необходимо:
sudo apt install python3-pip
sudo pip3 install requests_toolbelt
touch путь_к_файлу/add_printers.py
sudo chmod +x путь_к_файлу/add_printers.py
sudo -e путь_к_файлу/add_printers.py
Пример содержимого:
#!/usr/bin/python3
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
# URL для аутентификации
login_url = "https://dc01.domain.ald/ad/api/ds/login"
# Данные для аутентификации
login_data = {
"data": {
"login": "admin",
"password": "admin_pa$$word"
}
}
# Создать сессию для сохранения cookies
session = requests.Session()
# Выполнить аутентификацию
response = session.post(login_url, json=login_data)
if response.ok:
print("Аутентификация успешна")
else:
print("Ошибка аутентификации", response.text)
exit()
# Путь к файлу драйвера
driver_file_path = "/tmp/Generic.ppd"
# Чтение данных PPD драйвера
with open(driver_file_path, 'rb') as f:
driver_content = f.read()
# Создать объект MultipartEncoder
multipart_data = MultipartEncoder(
fields={
'printer_connection': 'ipp://cups.domain.ald/printers/Test_printer',
'printer_description': '',
'printer_driver': ('Generic.ppd', driver_content, 'application/octet-stream'),
'printer_location': '',
'printer_name': 'Test_printer'
}
)
# Заголовки и данные формы
headers = {
'Accept': 'application/json, text/plain, */*',
'Content-Type': multipart_data.content_type,
'Origin': 'https://dc01.domain.ald',
'Connection': 'keep-alive',
'Referer': 'https://dc01.domain.ald/ad/ui/',
'X-CSRFToken': session.cookies.get('csrftoken')
}
# URL для создания нового принтера
create_printer_url = "https://dc01.domain.ald/ad/api/ps/servers/cups.domain.ald/printers"
# Отправить POST-запрос для создания нового принтера
response = session.post(
create_printer_url,
data=multipart_data,
headers=headers
)
if response.ok:
print("Принтер успешно создан")
else:
print("Ошибка при создании принтера", response.text)
где:
Чтобы добавить несколько принтеров с помощью данного скрипта, можно использовать цикл и словарь для сопоставления имени принтера, подключения и пути к файлу драйвера.
Дополнительная информация