简体   繁体   English

python在列表中循环

[英]python looping in list

need some help on looping the all the list and print the list name currently i have few raspberry pi type and windows PC, i want to ping all the pi and windows and get respond below are some of what i have tried需要一些帮助来循环所有列表并打印列表名称,目前我几乎没有树莓派类型和 Windows PC,我想 ping 所有 pi 和 Windows 并在下面得到响应是我尝试过的一些

question is how to loop, piserver, pi2b,pi2,pi3,pi4 and windows问题是如何循环、piserver、pi2b、pi2、pi3、pi4 和 windows

import platform
plat = platform.system()
piservers = {"10.10.10.115", "10.10.10.125", "10.10.10.135", "10.10.10.145", "10.10.10.165", "10.10.10.175", "10.10.10.185"}
pi2b= {"10.10.10.111", "10.10.10.112", "10.10.10.113", "10.10.10.114"}
pi2 = {"10.10.10.121", "10.10.10.122", "10.10.10.123", "10.10.10.124"}
pi3 = {"10.10.10.131", "10.10.10.132", "10.10.10.133", "10.10.10.134"}
pi4 = {"10.10.10.141", "10.10.10.142", "10.10.10.143", "10.10.10.144"}
Windows = {"10.10.10.151", "10.10.10.152", "10.10.10.153", "10.10.10.154"}

for vm in piservers :
    # Check for Windows and Linux Platforms
    if plat == "Windows":
        response = os.system("ping -n 1 " + vm)
        pass

    elif plat == "Linux":
        response = os.system("ping -c 1 -W 3 " + vm)
        pass

    #and then check the response...
    if response == 0:
        print ("***********************************")
        print(vm, 'is UP!')
        print ("***********************************")
        print ("\n")
    elif response == 2 or 256 or 512:
        print ("***********************************")
        print(vm, 'is DOWN and No response from Server!')
        print ("***********************************")
        print ("\n")
    else:
        print ("***********************************")
        print(vm, 'is DOWN!')
        print ("***********************************")
        print ("\n")

在您的elif语句中,它应该是:

elif response == 2 or response == 256 or response == 512:

If you want to loop through all the sets at once, you can do:如果你想一次遍历所有集合,你可以这样做:

for vm in piservers|pi2b|pi2|pi3|pi4|Windows:

Update更新

To get the server list name, write a function like this:要获取服务器列表名称,请编写如下函数:

def get_server(ip):
    servers = ['piservers', 'pi2b', 'pi2', 'pi3', 'pi4', 'Windows']
    for server in servers:
        if ip in eval(server):
            return server
    return ''

Use this function where ever you need to show the list name.在需要显示列表名称的地方使用此功能。 for example:例如:

get_server('10.10.10.151')                                                                                                           
'Windows'
get_server('10.10.10.133')                                                                                                           
'pi3'

In your case, the code will look like this,在您的情况下,代码将如下所示,

get_server(vm)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM