[英]python script to check and install packages
我正在嘗試編寫 python 腳本來檢查和安裝 linux 中的軟件包。 我有兩個問題:
首先,我嘗試編寫以下代碼來檢查包,但沒有工作。 我缺少的是如何將打印轉換為終端到我可以檢測到的變量。 請找到代碼。
import apt
import os
x = os.system('apt-cache policy python3.6-dev')
if x>0:
print('installed')
else:
print('not installed')
import os
os.system('dpkg-query -l | grep python3.6-dev | wc -l')
x = os.system('echo $?')
if x>0:
print('installed')
else:
print('not installed')
其次,我嘗試編寫一個 python 腳本來安裝。 但是,對於 linux,我們總是使用 sudo。 我過去寫過這段代碼,它使用 gksudo。 它可以工作,但現在無法正常工作,因為他們刪除了 gksudu。 如何修改此代碼以及我還可以使用什么來代替 gksudo
import os
os.system('gksudo python RAM.py')
import os
# install
os.system('sudo apt-get install python3.6-dev')
首先,我建議您使用subprocess
模塊而不是os
。 為了執行 shell 命令並捕獲返回碼、stdout 和 stderr,您可以嘗試:
from subprocess import run, PIPE
res = run('apt-cache policy python3.6-dev', shell=True, stdout=PIPE, stderr=PIPE, check=True)
print(res.returncode, res.stdout, res.stderr)
其中check
(可選)是在執行失敗時引發異常(returncode>0)。
為了使用 sudo 運行命令,我建議如下:
password = "my_password"
base_command = "ls -l" # replace it with your command
command_with_sudo = f"echo {password} | sudo -S {base_command}"
res = run(command_with_sudo, shell=True, check=True, stdout=PIPE, stderr=PIPE)
請注意,將密碼作為純文本存儲在代碼中是非常不安全的,因此請盡量避免使用它(您可以將其作為腳本的參數提供/將其存儲在您的環境中/以某種方式對其進行加密 - 只是不要將其保留為在您的代碼中)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.