【问题标题】:How to fix 'For loop' as Token index is not increment如何修复“For循环”,因为令牌索引不增加
【发布时间】:2019-06-18 05:58:42
【问题描述】:

我正在处理 x3.py 文件并从 mon_back.py 文件中调用 check_vpn() 和 connect_vpn() 函数。当我在 x3.py 中调用 check_vpn 函数时,它工作正常,但问题是当我调用 connect_vpn() 时,令牌索引 [i] 没有增加。

This is x3.py

import json
import mon_back

obj = mon_back.vpn()
obj.check_vpn()

with open('auth1.json') as json_file:  
    data = json.load(json_file)
    token = data["vpn_detail"]["tokens"]
    for i in range(len(token)):
        token1 = token[i]
        print(token[i])
        print(token1)
        i = i+1   
        obj.connect_vpn(token1)
mon_back.py
import ------
class vpn():
    vpn_bin= '/home/'

    def check_vpn(self):  
        myCmd = os.popen('ps aux | grep vpnc').read()
        for():
            if():
            return true

    def connect_vpn(self,token1):
        child = pexpect.spawn(self.vpn_bin + 'connectCiscoVpn_Banglore username', encoding='utf-8')
        child.expect('com')
        child.sendline(token1)
        h = child.expect(['authentication unsuccessful','no response from target','VPNC started in background', '[#\$] '])
        if h==0 or h==1:         
            with open('auth1.json') as json_file:  
            data = json.load(json_file)
            token = data["vpn_detail"]["tokens"]
            for i in range(len(token)):
                token1 = token[i]
                i = i+1  
                self.connect_vpn(token1)                              
        elif h==2:
            print("##################   VpN Connected..   ###########")                
            sys.exit()

每次运行此代码时,我都会得到相同的令牌,如果身份验证不成功,那么它将增加 i = i + 1 的值,但在重新进入 for 循环后,i 的值变为零。我希望i 的值每次进入 for 循环时都会增加。

【问题讨论】:

    标签: python-3.x for-loop pexpect


    【解决方案1】:

    如果您首先运行x3.py 文件并正确检查您的代码流,您会发现您正在休息您的令牌。

    首先,您从打开文件中读取第一个令牌并将其传递给 mon_back.pyconnect_vpn 方法。 然后在mon_back.py 文件中检查h 的值,如果条件是您再次打开同一个文件并读取令牌,因此它再次获取第一个令牌。之后你调用相同的方法self.connect_vpn 并再次检查h 的条件并重新打开文件,以便再次读取第一个令牌。

    请检查您的代码流程并进行更正。

    一种解决方案是,在不需要编写任何内容的情况下,您只需从那里返回或打印消息或错误日志并返回,以便流程可以转到 x3.py 并获取第二个令牌以返回 connect_vpn方法

    【讨论】:

      【解决方案2】:

      更改在下面的 for 循环中,谢谢@pawan。我在两个文件中都更改了这个 for 循环。

                  if h==0 or h==1:               
                      with open('auth1.json') as json_file:  
                          data = json.load(json_file)
                          token = data["vpn_detail"]["tokens"]
                          for i in range(0,len(token)): 
                              token1 = token[i]
      
      

      在 for 循环中更改后,它将增加标记索引。谢谢。

      【讨论】:

        猜你喜欢
        • 2019-11-03
        • 2014-11-11
        • 2015-04-15
        • 2023-04-09
        • 2021-11-04
        • 2022-11-16
        • 1970-01-01
        • 1970-01-01
        • 2021-07-17
        相关资源
        最近更新 更多