当前位置: 首页 > 面试题库 >

从python脚本以超级用户身份运行命令

阎功
2023-03-14
问题内容

因此,我试图使用子进程从python脚本中以超级用户身份运行一个进程。在ipython shell中,类似

proc = subprocess.Popen('sudo apach2ctl restart',
                        shell=True, stdin=subprocess.PIPE,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE)

工作正常,但是一旦将其粘贴到脚本中,我就会开始获得:sudo: apach2ctl: command not found

我猜这是由于sudo处理ubuntu上的环境的方式。(我也尝试sudo -E apche2ctl restartsudo env path=$PATH apache2ctl restart与无济于事)

所以我的问题基本上是,如果我想以apache2ctl restart超级用户身份运行,并在需要时提示用户输入超级用户密码,我该怎么做?我无意在脚本中存储密码。

编辑:

我尝试将命令既作为字符串又作为令牌传递给列表。在python解释器中,使用字符串我会正确获得密码提示(仍然像在我的原始问题中那样在python脚本中仍然不起作用),列表仅提供sudo的帮助屏幕。

编辑2:

所以我收集到的是,虽然shell = True时Popen可以像字符串一样使用某些命令,但它需要

proc = subprocess.Popen(['sudo','/usr/sbin/apache2ctl','restart'])

没有’shell = True’来使sudo工作。

谢谢!


问题答案:

尝试提供apache2ctl的完整路径。



 类似资料:
  • 问题内容: 我已经在计算机上安装了postfix,并且正在以编程方式(使用python)动态地更新virtual_alias(在某些操作上)。更新/ etc / postfix / virtual_alias中的条目后,我将运行以下命令: 但是我得到了错误: 我想以非人为方式运行上述sudo命令(这意味着我正在从python脚本运行此系统命令。)。那么如何使该命令以编程方式运行? 问题答案: 您可

  • 我正在尝试以root用户身份运行脚本。这是我的密码 它在出错 我也遵循了这些方法,但最终出现了错误

  • 问题内容: 我正在尝试让python删除一些目录,但出现访问错误。我认为python用户帐户没有权限吗? 是我运行脚本时得到的。 我试过了 它们都返回相同的错误。 问题答案: 即使将文件和目录设置为“只读”,即使我们刚刚复制了文件和目录,我们也遇到了问题。为您提供某种异常处理程序来处理这种情况。您调用它并提供一个异常处理程序,如下所示: 您可能想尝试一下。

  • 问题内容: 我正在使用Python在系统级别的Linux中进行项目。因此,我想知道,如果我以普通用户身份运行代码,并且正在访问系统文件,那么它应该具有root权限,那么我如何提示输入root密码并以超级用户身份运行其他代码。我想知道,如何以超级用户身份以密码提示运行python脚本。 任何帮助将不胜感激。先感谢您.. 问题答案: 您可以做的另一件事是,如果脚本不是以root身份执行的,则脚本会自动

  • 问题内容: 我正在尝试使用ruby脚本进行一些无头的测试。本质上,我正在执行display:1上的Xvfb,然后使用watir- webdriver启动。 如果您以root用户身份运行脚本,则效果很好-我可以运行x11vnc并观看脚本执行浏览器并与之交互。 问题是,我需要能够从Rails应用程序调用此ruby脚本,而不是以root身份运行…如果我尝试以常规用户身份从命令行运行脚本,则Xvfb会在:

  • 问题内容: 尝试编写一个能够以其他UNIX用户身份运行UNIX命令的Java程序。我有用户的密码,并且知道要运行的命令,但是该命令必须以该用户身份运行- 因此我必须先以该用户身份登录。 例如:假设我们有一个用户jim,他想查看bob的主目录中的内容,并且(出于某种原因)jim有权执行ls,而bob则没有。 我们目前以bob身份登录 。这是我们(可以)执行的操作: 问题是,系统提示您输入吉姆的密码。