В статье найдёте пример 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)
где:
Чтобы добавить несколько принтеров с помощью данного скрипта, можно использовать цикл и словарь для сопоставления имени принтера, подключения и пути к файлу драйвера.
Дополнительная информация