Я пытаюсь создать небольшое приложение с Python & Cherrypy.Мне нужно интерфейс Docker: список изображений, создание экземпляров изображений и т. Д. Фон, вероятно, не важен.Мне просто нужно выполнить несколько внешних команд (используя подпроцесс) и обработать результат на стороне сервера.Проблема: вам нужно быть пользователем root для запуска этих команд.Как сделать это с веб-сервера?
Мой код ниже работает нормально, когда я запускаю команду 'ls', но завершается неудачно с командой 'sudo docker images':
subprocess.CalledProcessError: Command 'sudo docker images' returned non-zero exit status 1.
ЭтоКоманда отлично работает, когда я запустил его в терминале и дал пароль root.Поэтому мне нужен способ повысить привилегии на сервере.Извините, если я это неправильно сформулирую, не стесняйтесь обучать меня.Я старый пользователь Linux, но не айтишник.Я немного искал, как это сделать, и не нашел места ...
Спасибо за вашу помощь
С уважением, Николас
import subprocess
import cherrypy
def externalCmd(cmd):
return subprocess.check_output(cmd, shell=True).decode('utf-8')
class Webpages(object):
def index(self):
#self.images = externalCmd("sudo docker images")
self.images = externalCmd("ls")
return ''' Images ''' + self.images
index.exposed = True
# run web server
cherrypy.engine.exit()
cherrypy.quickstart(Webpages(), config="webserver.conf")
Файл webserver.conf содержитследующее:
[global]
server.socket_host ="127.0.0.1"
server.socket_port = 8080
server.thread_pool = 5
tools.sessions.on = True
tools.encode.encoding = "Utf-8"
[/annexes]
tools.staticdir.on = True
tools.staticdir.dir = "images"