Как исправить 'For loop', так как индекс токена не увеличивается - PullRequest
0 голосов
/ 18 июня 2019

Я работаю над файлом x3.py и вызываю функции check_vpn () и connect_vpn () из файла mon_back.py. Когда я вызываю функцию check_vpn в x3.py, она работает нормально, но проблема в том, что когда я вызываю 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.

Ответы [ 2 ]

0 голосов
/ 18 июня 2019

Изменения в цикле ниже, спасибо @pawan. Я изменил это для цикла в обоих файлах.

            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 будет увеличиваться индекс токена. Спасибо.

0 голосов
/ 18 июня 2019

Если вы сначала запускаете файл x3.py и правильно проверяете поток кода, вы обнаружите, что вы кладете свои токены.

сначала вы читаете первый токен, открывая файл и передавая его connect_vpn метод mon_back.py.Затем в файле mon_back.py вы проверяете значение h, если при условии вы снова открываете тот же файл и читаете токен, чтобы он снова взял первый токен.после этого вы вызываете тот же метод self.connect_vpn и снова проверяете условие h и снова открываете файл, чтобы снова прочитать первый токен.

Пожалуйста, проверьте поток кода и исправьте его.

Одно из решений заключается в том, что в случае, если вам не нужно ничего писать, просто вернитесь оттуда или напечатайте сообщение или журнал ошибок и вернитесь, чтобы поток мог перейти к x3.py и взять второй токен для возврата к connect_vpnметод

...