为每个主机创建一个URL并执行它们,然后将所有服务器添加到一个文件中?

2024-05-16 08:05:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我的列表中有所有服务器的列表,如下所示:

goldy11.abc.host.com
goldy12.abc.host.com
goldy21.pqr.host.com
goldy22.pqr.host.com
goldy31.def.host.com
goldy32.def.host.com
goldy41.jhk.host.com
goldy42.jhk.host.com
goldy81.abc.host.com
goldy82.abc.host.com
goldy91.pqr.host.com
goldy92.pqr.host.com
goldy71.def.host.com
goldy72.def.host.com
goldy51.jhk.host.com
goldy52.jhk.host.com

现在我想通过如下方式为每个服务器创建url来ping所有上述服务器:

http://goldy11.abc.host.com:8080/check
http://goldy12.abc.host.com:8080/check
http://goldy21.pqr.host.com:8080/check
http://goldy22.pqr.host.com:8080/check
http://goldy31.def.host.com:8080/check
http://goldy32.def.host.com:8080/check
http://goldy41.jhk.host.com:8080/check
http://goldy42.jhk.host.com:8080/check
http://goldy81.abc.host.com:8080/check
http://goldy82.abc.host.com:8080/check
http://goldy91.pqr.host.com:8080/check
http://goldy92.pqr.host.com:8080/check
http://goldy71.def.host.com:8080/check
http://goldy72.def.host.com:8080/check
http://goldy51.jhk.host.com:8080/check
http://goldy52.jhk.host.com:8080/check

如果我得到200个状态码,那就意味着服务器已经启动并运行了,所以在最后我将对所有已经启动并运行的服务器进行一行一行的file (hosts.txt)。我想在python中完成所有这些工作,所以示例文件最后看起来是这样的(假设所有服务器都已启动并运行,并且我们为它们提供了200个状态代码),但是如果任何服务器都已死机,那么我们不会将其添加到文件中:同样,每当我们运行这个python脚本时,它应该覆盖hosts.txt文件中的所有内容

[servers]
goldy11.abc.host.com
goldy12.abc.host.com
goldy21.pqr.host.com
goldy22.pqr.host.com
goldy31.def.host.com
goldy32.def.host.com
goldy41.jhk.host.com
goldy42.jhk.host.com
goldy81.abc.host.com
goldy82.abc.host.com
goldy91.pqr.host.com
goldy92.pqr.host.com
goldy71.def.host.com
goldy72.def.host.com
goldy51.jhk.host.com
goldy52.jhk.host.com

所以我开始是这样的,但是当我创建一个URL时,它不能执行URL。看起来在调试时,主机变量没有正确映射。另外,到目前为止,我正在将所有UP服务器存储在active_hosts变量中,如果这个列表大小大于0,那么我将把这个列表中的所有内容写入一个文件。这有可能吗

import json
import requests

// .... other code
all_hosts = hosts1 + hosts2
print all_hosts

active_hosts = []
for host in all_hosts:
    try:
        url = "http://"+host+":8080/check"
        r = requests.head(url)
        if r.status_code == 200:
           active_hosts.append(host)
    except requests.ConnectionError:
        print("failed to connect")

// write to a file if active_hosts size is greater than 0

Tags: 文件服务器comhttphost列表defcheck