[英]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.