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

2023-11-25

因此,我试图使用子进程从 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 restart and sudo env path=$PATH apache2ctl restart无济于事)

所以我的问题基本上是,如果我想跑步apache2ctl restart作为超级用户,在需要时提示用户输入超级用户密码,我应该如何执行此操作?我无意在脚本中存储密码。

Edit:

我尝试将命令作为字符串传递并标记为列表。在 python 解释器中,使用字符串我将正确获得密码提示(仍然无法像我原来的问题那样在 python 脚本中工作),列表仅提供 sudo 的帮助屏幕。

Edit 2:

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

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

没有 'shell=True' 来让 sudo 工作。

Thanks!


Try:

subprocess.call(['sudo', 'apach2ctl', 'restart'])

子进程需要访问真正的 stdin/out/err 才能提示您并读取您的密码。如果将它们设置为管道,则需要自己将密码输入到该管道中。

如果你没有定义它们,那么它会获取 sys.stdout 等......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

以超级用户身份从 python 脚本运行命令 的相关文章

  • Sublime Text 插件开发中的全局 Python 包

    一 总结 我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包 而不是 Sublime Text 目录的 Python 包 Sublime Text使用自己的Python环境 而不是
  • 为什么删除临时文件时出现WindowsError?

    我创建了一个临时文件 向创建的文件添加了一些数据 已保存 然后尝试将其删除 但我越来越WindowsError 编辑后我已关闭该文件 如何检查哪个其他进程正在访问该文件 C Documents and Settings Administra
  • Pandas:GroupBy 到 DataFrame

    参考这个关于 groupby 到 dataframe 的非常流行的问题 https stackoverflow com questions 10373660 converting a pandas groupby object to dat
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • Keras:如何保存模型或权重?

    如果这个问题看起来很简单 我很抱歉 但是阅读 Keras 保存和恢复帮助页面 https www tensorflow org beta tutorials keras save and restore models https www t
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 在 keras 中保存和加载权重

    我试图从我训练过的模型中保存和加载权重 我用来保存模型的代码是 TensorBoard log dir output model fit generator image a b gen batch size steps per epoch
  • Mac OSX 10.6 上的 Python mysqldb 不工作

    我正在使用 Python 2 7 并尝试让 Django 项目在 MySQL 后端运行 我已经下载了 mysqldb 并按照此处的指南进行操作 http cd34 com blog programming python mysql pyth
  • SocketIO + Flask 检测断开连接

    我在这里有一个不同的问题 但意识到它可以简化为 如何检测客户端何时从页面断开连接 关闭其页面或单击链接 换句话说 套接字连接关闭 我想制作一个带有更新用户列表的聊天应用程序 并且我在 Python 上使用 Flask 当用户连接时 浏览器发
  • 当数据库不是 Django 模型时,是否可以使用数据库中的表?

    是否可以从应用程序数据库中的表获取查询集 该表不是应用程序中的模型 如果我有一个不是名为 cartable 的模型的表 从概念上讲 我想这样做 myqueryset cartable objects all 有没有相对简单的方法来做到这一点
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 如何与 NSPersistentCloudKitContainer 设置有序关系?

    当我检查时Used with CloudKit 错误Folder children must not be ordered出现了 关于有序关系有什么想法吗 使用 Xcode 11 测试版 3 这是Folder Entity 适用于 iOS
  • 在 Fortran 中使用“X != 0”时出现语法错误

    我的 Fortran 程序有一个问题 它除了计算素数分解 或应该做 之外什么也不做 这就是错误 C MinGW Fortran gt gfortran aufg3 f90 aufg3 f90 15 15 if prim i 0 and mo
  • 计算函数 sin()

    为了我的学习 我必须编写一个算法来计算sin 有了这个功能 然而 在我的算法中 我必须将 X 的值保持在 0 到 Pi 2 之间 所以 我写了我的算法 但所有结果都是错误的 这是我的代码 double sinX double x doubl
  • 在启动时获取azure应用程序服务插槽名称?

    当 asp net core 进程启动时 如何获取我的应用程序服务的插槽 生产或暂存 的名称 HTTP HOST 环境变量似乎没有在启动时设置 并且我没有要检查的 http 请求 如果我们想获取主机名 可以使用环境变量WEBSITE HOS
  • 在一个项目中编译 Silverlight 和 WPF 的最佳实践是什么?

    我刚刚完成了一个 Silverlight 项目 是时候进行一些清理了 我想将我的核心文件放入一个单独的项目中 我将从我的主 Silverlight 应用程序中引用该项目 其中一些类与 WPF 兼容 我非常希望能够将 Silverlight
  • C 获取文件的最后修改日期

    我想获取 C 语言中文件的最后修改日期 我发现的几乎所有来源都使用以下代码片段中的内容 char get last modified char file struct tm clock struct stat attr stat file
  • os.system()在哪个linux shell下执行命令?

    我在用 bin tcsh作为我的默认外壳 然而 tcsh 风格的命令os system setenv VAR val 对我不起作用 但os system export VAR val works 所以我的问题是我怎样才能知道os syste
  • 安全性:如何验证图像文件上传?

    我需要接受用户上传的图像文件 如何检查并 100 确定我没有收到恶意文件或其他内容 检查 mime 类型 重新画图 防病毒 重新绘制图像 读取它GD s imagecreatefromXXX 并将其保存回来imageXXX 通过这种方式 您
  • 使用 JWT 验证套接字 io 连接

    如何验证 socket io 连接 我的应用程序使用来自另一台服务器 python 的登录端点来获取令牌 每当用户在节点端打开套接字连接时 如何才能使用该令牌 io on connection function socket socket
  • 上传json数据时如何按百分比显示进度条状态?

    我正在上传字符串和照片 它工作正常 现在我想在上传百分比数据时显示进度条 但百分比很快显示到 100 百分比 并且需要更多时间上传 最后到达后执行方法 protected class upload images extends AsyncT
  • 如何使 Django 的“DATETIME_FORMAT”处于活动状态?

    应该在哪里DATETIME FORMAT放置以使其发挥作用 在 Django 管理站点中显示日期时间 Django 的自动管理界面 文档用于DATETIME FORMAT 页上http docs djangoproject com en 1
  • 从 pyaudio-stream 获取浮点数形式的音频样本

    由于我目前正准备构建一个基于 Raspberry Pi 的设备 用于测量声卡记录的噪声 例如方差 中的一些内容 并尝试在 python 中执行此操作 所以我陷入了如何获取音频样本的困境中用于进一步计算的浮点数 我做了什么 使用线路输入适配器
  • 如何将 telnet 控制台日志重定向到文件 Linux

    我想将 telnet 控制台日志重定向到 Linux 中的文件 例如 telnet someIp gt someFile ls exit 我希望控制台日志保存在文件名中someFile 我在用tcl用于自动化此操作 截至目前 我正在做spa
  • 使用带有 Kerberos 身份验证的 impyla 客户端连接到 Impala

    我在 W8 机器上 使用 Python Anaconda分布 连接到Impala in our Hadoop集群使用Impyla包裹 我们的 hadoop 集群是通过以下方式保护的Kerberos 我已遵循API参考如何配置连接 from
  • 如何更改 Eclipse 中的*默认*默认编码?

    每次创建新工作区时 Eclipse 都会默认使用 Cp1250 编码 每当我创建项目的新分支并切换到 Eclipse 中的新工作区时 我需要转到窗口 gt 首选项 gt 常规 gt 工作区 文本文件编码并手动切换到 其他 UTF 8 如果我
  • 如何对使用 thymeleaf 的安全控制器进行单元测试(不会出现 TemplateProcessingException)?

    我正在尝试使用 spring security 和一个简单的家庭 根 控制器在 spring boot 中运行单元测试 该控制器使用 thymeleaf 进行模板处理 我正在尝试编写一些单元测试来验证我的安全权限是否正常工作以及我的模板 使
  • 更改不可变对象 F#

    我认为这个标题是错误的 但无法创建一个能够抽象地反映我想要实现的目标的标题 我正在编写一个调用服务并以 JSON 字符串形式检索数据的函数 该函数使用 a 来解析字符串JSON 类型提供者 在某些情况下 我想修改该 JSON 对象的属性 然
  • 如何使 Tomcat 中的所有会话过期?

    我想使 Tomcat 中的所有会话过期 我们在 Fitnesse 下测试我们的产品 并且仍然保留一些会话 会话结束会导致测试之间存在依赖性 我使用以下代码手动完成此操作 但仍然存在一些会话 我可以使用http localhost 8080
  • 寻找一个好的 jQuery 数据网格插件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要让我的用户维护一些帐户和住宿 每个帐户可以1到多个住宿 每个住宿仅链接到1个帐户 我希望能够让用户编辑帐户详细信息 在同一页面上 我想列出链接
  • 以超级用户身份从 python 脚本运行命令

    因此 我试图使用子进程从 python 脚本中获取一个以超级用户身份运行的进程 在 ipython shell 中类似 proc subprocess Popen sudo apach2ctl restart shell True stdi