如何使用Python脚本在Shell / Linux中运行sudo命令

时间:2019-07-03 08:59:24

标签: python python-3.x bash shell sudo

如何使用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}}

2 个答案:

答案 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

但是,如果您确定要确保此操作可以对系统上的任何人打开此命令的执行,而无需提升权限。这可能会带来巨大的安全风险。