Как установить systemd сервис с корневым доступом?

Описание

Я пытаюсь сделать systemd сервисный файл для запущения скрипта Python для печати чего-то с помощью термического принтера. escpos является библиотекой, которой я пользуюсь для доступа к управлению термического принтера. Однако escpos требуют, чтобы sudo получил доступ к USB-устройству.

Вопрос

Как заставить systemd сервис зарегистрировать таким образом, что исполнительная команда получает корневой доступ? Основа на некотором ответе в Интернете, если я ничего не устанавливаю на Пользователя, должностное лицо по умолчанию, должна получить корневой доступ автоматически. Но я, все еще заставляя проблему сделать мой прогон программы. Надежда любой может помочь мне определить свою ошибку.

Код

Python

Файл:/usr/local/etc/test/testPrint.py

from escpos.printer import Usb
#require escpos use "pip install python-escpos" to install the library
""" Seiko Epson Corp. Receipt Printer (EPSON TM-T88III) """
p = Usb(0x4b43, 0x3538, 0, 0x82, 0x02)
p.text("Hello World\n")
p.text("\n\n\n")
p.cut()

Я могу работать sudo python3 /usr/local/etc/test/testPrint.py и распечатайте текст от термического принтера без любой проблемы.

Сервисный файл

Файл:/etc/systemd/system/testPrint.service

[Unit]
Description=Test Python escpos print
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/python3 /usr/local/etc/test/testPrint.py
[Install]
WantedBy=multi-user.target

И когда я пытаюсь выполнить команду sudo systemctl start testPrint.service. Это дает ошибку

Журнал ошибок

Команда: sudo journalctl -u testPrint.service:

python3.5[27149]: Traceback (most recent call last):
python3.5[27149]:   File "/usr/local/etc/test/testPrint.py", 
python3.5[27149]:     from escpos.printer import Usb
python3.5[27149]: ImportError: No module named 'escpos'
systemd[1]: testPrint.service: Main process exited, code=exit
systemd[1]: Failed to start Test python escpos print.
systemd[1]: testPrint.service: Unit entered failed state.
systemd[1]: testPrint.service: Failed with result 'exit-code'

Который является той же ошибкой, если я запускаю Python без sudo "python3 printTest.py"

Править:

Только выделить некоторую дополнительную информацию. Я использую python-escpos установки sudo pip3 для установки модуля. Моей ОС является Ubuntu 16.04

1
задан 22 November 2018 в 12:59

1 ответ

Я решил проблему.

Эта ошибка не вызывается корневым разрешением, а скорее escpos модуль не является установкой правильно при пользователе root. После того, как я переустанавливаю escpos sudo pip3 install python-escpos все коды работают соответственно, и может распечатать текст.

0
ответ дан 7 December 2019 в 22:26

Другие вопросы по тегам:

Похожие вопросы: