簡體   English   中英

如何使用Python腳本在Shell / Linux中運行sudo命令

[英]How to run sudo commands in shell/linux using python script

如何使用python腳本運行sudo bash

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)

錯誤cd沒有文件或目錄

也嘗試過這個:

import shlex
import subprocess



subprocess.call(["cd","/home","/backups"])

您可以使用os模塊

import os

os.system("sudo and the code you want to run")

例如:

import os

os.system("sudo apt-get vlc")

之所以收到此錯誤,是因為您的命令先將密碼發布到cli,而不要求您輸入密碼。 因此,bash會將其解釋為顯然無法執行的命令。

最好做os.system('sudo command')並以root或sudo調用腳本。 這將確保您在運行時立即在腳本中擁有必要的特權。

您一定要避免執行操作的另一個原因是必須將計算機的sudo密碼以純文本形式寫入腳本。 絕對不要那樣做。 這是邪惡的。

如果沒有辦法,可以通過使用visudo編輯器向/etc/sudoers添加NOPASSWD指令,從而使sudo執行命令而無需輸入密碼,如下所示:

user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot

但是,如果確實要確保您知道這將對系統上的任何人打開此命令的執行,而無需提升權限。 這可能會帶來巨大的安全風險。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM