大家好,我有一个问题。
我正在执行一个 python 脚本,需要运行 sudo 命令才能继续。这是命令:
sudo /etc/init.d/test restart
问题是,无论我如何执行它,它都只运行 sudo 和/etc/init.d/test 并返回:
sudo: /etc/init.d/test: command not found
问题似乎是重启没有与命令一起发送。
这些是我尝试运行命令的方法:
使用操作系统的尝试 1
os.system('sudo /etc/init.d/test restart')
使用子进程的尝试 2
x = subprocess.Popen(['sudo','/etc/init.d/test','restart'])
x.communicate()
再次尝试使用子进程3
x = subprocess.Popen(['sudo','/etc/init.d/test restart'])
x.communicate()
这实际上返回了:
sudo: /etc/init.d/test restart: command not found
这没有意义,因为如果我直接在系统上执行该命令,它就可以工作。
关于如何做到这一点有什么想法吗?
最佳答案
#!/usr/bin/env python
import subprocess,getpass
password = getpass.getpass()
#proc = subprocess.Popen(
# ['sudo','-p','','-S','/etc/init.d/test','restart'],
# stdin=subprocess.PIPE)
proc = subprocess.Popen(
['sudo','-p','','-S','echo','restart'],
stdin=subprocess.PIPE)
proc.stdin.write(password+'\n')
proc.stdin.close()
proc.wait()
关于python - 通过python执行带空格的sudo命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787817/