Авторские статьи

ALD Pro. Автоматизация добавления принтера


В статье найдёте пример python скрипта для автоматизации добавления принтера в домене ALD Pro. Модифицируйте и улучшайте под свои нужды.

Окружение
* ALD Pro 2.4.1

Вопрос
Как добавить принтер в ALD Pro, не используя портал управления?

Ответ
Добавить принтер в ALD Pro, не используя портал управления, можно с помощью python-скрипта. Для этого необходимо:

  1. Установить python-модуль requests_toolbelt:
    sudo apt install python3-pip
    sudo pip3 install requests_toolbelt
  2. Создать файл скрипта: touch путь_к_файлу/add_printers.py
  3. Сделать файл исполняемым: sudo chmod +x путь_к_файлу/add_printers.py
  4. Изменить содержимое файла: 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)
    

    где:

    • dc01.domain.ald — адрес контроллера домена ALD Pro
    • admin_pa$$word — пароль администратора ALD Pro
    • /tmp/Generic.ppd — путь к файлу драйвера принтера
    • Generic.ppd — имя файла драйвера принтера
    • ipp://cups.domain.ald/printers/Test_printer — подключение
    • cups.domain.ald — адрес сервера печати CUPS
    • Test_printer — имя принтера

    Чтобы добавить несколько принтеров с помощью данного скрипта, можно использовать цикл и словарь для сопоставления имени принтера, подключения и пути к файлу драйвера.

Дополнительная информация

Дата последней правки: 2025-03-03 15:48:03

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта

Лучшее на сайте:

1С под Linux.   Ускорение Ubuntu.   21 пример iptables.   Цикл статей о Ceph.   Убунту в дикой среде.   Ubuntu Linux на SSD.   Ubuntu для блондинок.   Поддержка железа в Linux.   BTSync на службе у админа.   Андроид программы в Ubuntu.   Прокидывание портов для p2p.   Анти СПАМ в Postfix.