如何修复 'For loop' 作为令牌索引不递增
How to fix 'For loop' as Token index is not increment
我正在处理 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 循环时都会增加。
如果您 运行 x3.py
先提交文件并正确检查您的代码流,您会发现您正在休息您的令牌。
首先,您从打开文件中读取第一个标记并将其传递给 mon_back.py
的 connect_vpn
方法。
然后在 mon_back.py
文件中检查 h
的值,如果条件是您再次打开同一个文件并读取令牌,以便它再次获取第一个令牌。之后你调用相同的方法 self.connect_vpn
并再次检查 h
的条件并重新打开文件,因此它再次读取第一个标记。
请检查您的代码流并更正它。
一个解决方案是,在 if 条件下,您不需要只从那里写任何东西 return 或打印消息或错误日志和 return,这样流程就可以转到 x3.py
并拿第二个令牌回到 connect_vpn
方法
更改在下面的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 循环发生变化后,它会增加令牌索引。谢谢
我正在处理 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 循环时都会增加。
如果您 运行 x3.py
先提交文件并正确检查您的代码流,您会发现您正在休息您的令牌。
首先,您从打开文件中读取第一个标记并将其传递给 mon_back.py
的 connect_vpn
方法。
然后在 mon_back.py
文件中检查 h
的值,如果条件是您再次打开同一个文件并读取令牌,以便它再次获取第一个令牌。之后你调用相同的方法 self.connect_vpn
并再次检查 h
的条件并重新打开文件,因此它再次读取第一个标记。
请检查您的代码流并更正它。
一个解决方案是,在 if 条件下,您不需要只从那里写任何东西 return 或打印消息或错误日志和 return,这样流程就可以转到 x3.py
并拿第二个令牌回到 connect_vpn
方法
更改在下面的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 循环发生变化后,它会增加令牌索引。谢谢