我正在用Python编写一个进程的脚本,在我的代码中,我使用p = subprocess.Popen(['example', 'command', 'and', 'args')
进行了几个命令行调用。我最近遇到了一个问题,几个命令行调用需要sudo
权限,因此用户最终不得不多次键入sudo密码,这是不希望的。有没有一种方法可以只生成一个shell实例,并在整个程序中重复使用它?即使从不同的类运行不同的命令,也能做到这一点吗?谢谢
对于具体性,假设您的程序如下所示:
import subprocess
import shlex
proc = subprocess.Popen(shlex.split('fdisk -l'))
proc.communicate()
proc = subprocess.Popen(shlex.split('fdisk -l'))
proc.communicate()
以普通用户身份运行它不会返回任何输出。
但是如果你运行
% sudo python /path/to/test.py
然后系统会提示您输入一次root密码,并且两个subprocess.Popen
命令都以root身份运行。