我正在尝试用Python获取我的计算机的hostname。我可以使用socket获取主机名。现在,我需要将此hostnamecolo列表进行比较,看看该hostname是否属于哪个datacenter。它来自dc1或dc2或dc3。

#!/usr/bin/python

colo = ['dc1', 'dc2', 'dc3']

hostname = socket.gethostname()


如何检查该主机名是否来自哪个colo,然后将其打印出该colo?

示例主机名将如下所示-

dc1dbx1145.dc1.host.com
dc1dbx1146.dc1.host.com
dc1dbx1147.dc1.host.com
dc1dbx1148.dc1.host.com

最佳答案

.上分割并测试第二个值:

location = hostname.split('.')[1]


演示:

>>> hostname = 'dc1dbx1145.dc1.host.com'
>>> hostname.split('.')[1]
'dc1'


您可能希望通过以下方法验证找到的名称确实是可识别的位置:

if location not in colo:
   print 'Not a recognized location'


如果您不知道位置可能是哪一部分,请使用:

location = next((part for part in hostname.split('.') if part in colo), None)
if location is None:
    print 'Not a recognized location'

10-07 21:53