从CherryPy运行sudo命令

时间:2019-03-25 11:10:40

标签: python linux docker cherrypy

我正在尝试使用Python和Cherrypy创建一个小型应用程序。我需要连接Docker:列出图像,实例化图像等。背景可能并不重要。我只需要运行一些外部命令(使用子过程)并在服务器端处理结果即可。问题:您需要是root用户才能运行这些命令。如何通过网络服务器执行此操作?

当我运行'ls'命令时,下面的代码可以正常工作,但使用'sudo docker images'命令失败:

subprocess.CalledProcessError: Command 'sudo docker images' returned non-zero exit status 1.

当我在终端中运行该命令并提供root密码时,该命令可以正常工作。因此,我需要一种提升服务器特权的方法。抱歉,如果我对此声明不正确,请随时教育我。我是老Linux用户,但不是IT人员。我研究了一些方法,却无处可做...

感谢您的帮助

亲切的问候, 尼古拉斯

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"

0 个答案:

没有答案