使用子进程python多线程调用的提升权限运行bash脚本

问题描述 投票:1回答:1

我在linux上用python编程,我使用multiprocessing_pool.apply_async使用subprocess.check_output调用bash脚本

bash脚本正在调用alien和rpmbuild。 alien命令需要以root身份运行,因此rpmbuild命令也会执行root sed命令来纠正某些rpm特性。

目前,如果我想将几个deb转换为rpms,我必须多次输入我的管理员密码。

有没有办法只输入一次我的管理员密码?即,始终使用不同的变量作为新进程调用脚本,但在一次密码输入后始终提升权限?目前我正在使用pkexec调用脚本,脚本本身使用了sudo。

非常感谢

python bash subprocess sudo
1个回答
1
投票

如果以超级用户身份运行python脚本,脚本不应该问你密码:

$ sudo python -c "import os ; os.system('whoami')"
root

所以像往常一样运行你的东西,但在sudo之前使用python。如果您需要运行多个python脚本并仅键入一次密码,请键入sudo su。然后,您将成为所有命令的root(不添加sudo),直到您关闭终端会话。

提供密码的其他方法:

  1. 如果要为密码显示gui提示,可以使用sudo -A
  2. 如果要将密码作为stdin传递,可以使用sudo -S

每个进程都有自己的用户,您必须创建多个进程才能拥有多个用户。

© www.soinside.com 2019 - 2024. All rights reserved.