如何使用python脚本运行import subprocess
import os
sudoPassword2 = 'abcd1234'
command2 = 'sudo bash'
p2 = os.system('echo %s|sudo -S %s' % (sudoPassword2, command2))
bash: line 1: abcd1234: command not found
我收到此错误:
import shlex
import subprocess
command1 = shlex.split('cd /home/backups')
subprocess.call(command1)
当我尝试这样做也给与错误
import shlex
import subprocess
subprocess.call(["cd","/home","/backups"])
错误cd没有文件或目录
也尝试过:
{{1}}
答案 0 :(得分:0)
您可以使用os模块
import os
os.system("sudo and the code you want to run")
例如:
import os
os.system("sudo apt-get vlc")
答案 1 :(得分:0)
您收到此错误,是因为您的命令先将密码发布到cli而不要求您输入密码。因此,bash会将其解释为显然无法执行的命令。
最好做os.system('sudo command')
并以root用户或通过sudo调用脚本。这样可以确保您在运行时立即在脚本中拥有必要的特权。
您绝对不想执行任何操作的另一个原因是,必须将计算机的sudo密码以纯文本格式写入脚本。绝对不要那样做。这很邪恶。
如果没有办法,可以通过使用编辑器NOPASSWD
向/etc/sudoers
添加visudo
指令,使sudo执行命令而无需输入密码(请不要使用其他任何方法) ),就像这样:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
但是,如果您确定要确保此操作可以对系统上的任何人打开此命令的执行,而无需提升权限。这可能会带来巨大的安全风险。