我正在尝试使用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"