我正在尝试用Python获取我的计算机的hostname
。我可以使用socket
获取主机名。现在,我需要将此hostname
与colo
列表进行比较,看看该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'