gpt4 book ai didi

python - Fabric - 检测操作系统类型并执行命令

转载 作者:太空宇宙 更新时间:2023-11-04 10:12:58 25 4
gpt4 key购买 nike

我开始尝试将 Fabric 作为我的 GCP 环境的最小平台管理工具。我想尝试的一个测试用例是从 GCE API 获取主机列表并设置动态主机列表。基于此列表,我想应用简单的最小安全更新。此过程因操作系统而异。

# gets running hosts in a single project across all zones
def ag_get_host():
request = compute.instances().aggregatedList(project=project)
response = request.execute()

env.hosts = []
for zone, instances in response['items'].items():
for host in instances.get("instances", []):
if host['status'] == 'RUNNING':
env.hosts.append(host['name'])


# If redhat, run yum ; if ubuntu, run apt-get
def sec_update():
if 'redhat' in platform.platform().lower():
sudo('echo 3 > /proc/sys/vm/drop_caches')
sudo('yum update yum -y')
sudo('yum update-minimal --security -y')
elif 'ubuntu' in platform.platform().lower():
sudo('apt-get install unattended-upgrades')
sudo('sudo unattended-upgrades –d')

我在构建允许我获取操作系统版本详细信息的逻辑时遇到困难。 platform.platform() 获取主机操作系统的详细信息,而不是目标机器。

最佳答案

这里有一个可能的解决方案:

from fabric.api import task, sudo


def get_platform():
x = sudo("python -c 'import platform; print(platform.platform())'")
if x.failed:
raise Exception("Python not installed")
else:
return x


@task
def my_task():
print("platform", get_platform())

请注意,要求是在目标框中安装 python。

关于python - Fabric - 检测操作系统类型并执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47876879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com