用于检查和安装软件包的python脚本

问题描述 投票:1回答:1

我正在尝试编写python脚本以在Linux中检查和安装软件包。我有两个问题:

首先,我尝试编写以下代码来检查软件包,但无法正常工作。我所缺少的是如何将打印转换为终端到我可以检测到的变量。请找到代码。

Trial#1

import apt
import os

x = os.system('apt-cache policy python3.6-dev')
if x>0:
    print('installed')
else:
    print('not installed')

审判2

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使用其他什么]

文件1(调用RAM.py文件)

import os
os.system('gksudo python RAM.py')

文件2(RAM文件)

import os

# install
os.system('sudo apt-get install python3.6-dev')
python linux operating-system sudo gksudo
1个回答
0
投票

首先,我建议您使用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(可选)在执行失败时返回异常(返回码> 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)

请注意,将密码以纯文本形式存储在代码中非常[[不安全,因此请避免使用密码(您可以将其作为脚本的参数提供/在环境中存储/以某种方式对其进行加密-仅不要将其保留在您的代码中)

© www.soinside.com 2019 - 2024. All rights reserved.