下面是我编写的程序的一小段代码片段,它获取与之关联的所有实例ip和实例标记。我可以使用boto轻松完成此操作,我的问题是,如果我找到一个没有任何标记名称的AWS实例,我想在文件中显示/写入" ip UNKNOWN"。
for reservation in reservations:
for instances in reservation.instances:
if instances.state == "running":
print instances.private_ip_address,instances.tags['Name']
fileCSV.write("%s %s\n"%(instances.private_ip_address,instances.tags['Name']))
if instances.state == "running" and 'Name' in instances.tags==' ':
print "%s %s" % (instances.private_ip_address,"UNKNOWN")
fileCSV.write("%s %s\n"%(instances.private_ip_address,"UNKNOWN")
此代码打印出类似这样的内容
192.124.121.17
192.124.121.11 squid-server
192.124.121.13 apache
我期待:
192.124.121.17 UNKNOWN
192.124.121.11 squid-server
192.124.121.13 apache
答案 0 :(得分:1)
您的代码似乎始终捕获第一个if
块。
您可以尝试使用default value
方法中的get
字典选项。
试试这个:
for reservation in reservations:
for instances in reservation.instances:
if instances.state == "running":
name = instances.tags["Name"] if instances.tags["Name"] != "" else "UNKNOWN"
print instances.private_ip_address,name
fileCSV.write("%s %s\n" % (instances.private_ip_address,name))
答案 1 :(得分:1)
我没有对此进行测试,但这应该可行。
for reservation in reservations:
for instances in reservation.instances:
if instances.state == "running":
print instances.private_ip_address, instances.tags['Name'] if instances.tags['Name'] else 'UNKNOWN'