python中的多个else条件

时间:2018-04-19 09:00:04

标签: python python-2.7

我有python脚本将从文件读取每个IP并使用密码在该IP上安装代理,有5-6个密码,如果一个密码不起作用,它应该逐个尝试其他所有密码。 这是我的剧本:

##Reading values from SucessfullIp.txt
with open('/root/nix_bsd_mac_inventory-master/SucessfullIp.txt') as f:
    ips = set(line.rstrip() for line in f)

##Reading Unique Ip's values 
with open("/root/nix_bsd_mac_inventory-master/Unique.txt") as fp:
        for line in fp:
                line = line.rstrip()
                ## Comparing unique ip's if ip is already has scanned
                if line in ips:
                        print('{}: Ip is Already Tried: '.format(line))
                else:
                ##Creating inventory.cfg file on the fly for each ip
                        f3 = open("/root/nix_bsd_mac_inventory-master/inventory.cfg", "w")
                        print "Processing Ip: " + line
                        f3.write("[device42_access]"  + "\n" +
                        "base_url = https://1.8.0.3"  + "\n" +
                        "username = uname"  + "\n" +
                        "secret = abcd"  + "\n" +
                        "[discover]"  + "\n" +
                        "cpu= true"  + "\n" +
                        "hardware = true"  + "\n" +
                        "memory = true"  + "\n" +
                        "[access]"+ "\n" +
                        "credentials = username:passowrd1" + "\n" + ##here we are giving credentials and we have 5-6 passwords
                        f3.close()
                        p = subprocess.Popen(["./d42_linux_autodisc_v620"], stdout=subprocess.PIPE) ##This script will require inventory.cfg file created above
                        p1 = str(p.communicate())
                        if '1 devices were successfully added/updated' in p1:
                                print ('Sucessfull Completed Ip: ' +line)
                                f6 = open("/root/nix_bsd_mac_inventory-master/SucessfullIp.txt","a")
                                f6.write("\n"+line)
                                f6.close()
                        else:
                                print "Unsuccessfull"
                            ##here want it to check it with other passwords as well 

2 个答案:

答案 0 :(得分:0)

你可以使用for循环和其他一个来完成:

for password in list_of_password:
    ...
    "credentials = username:" + password + "\n"
    ...
    if '1 devices were successfully added/updated' in p1:
        ...
        break
else:
    print "Unsuccessfull"

答案 1 :(得分:0)

你应该迭代一个密码列表,如果一个成功,就会突破循环。

您在以下代码段中遇到语法错误:

"credentials = username:passowrd1" + "\n" + 

这不应该以{{1​​}}结尾,因为你没有将任何其他内容连接到字符串。

如您在答案中使用循环一样,查找可用于循环的break, continue, and else statements将非常有用。

我删除了所有评论,并添加了我自己的评论来解释逻辑。

+