Запустите команду sudo из CherryPy - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь создать небольшое приложение с 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"
...