我正在处理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循环时都是递增的。
答案 0 :(得分:0)
如果首先运行x3.py
文件,并正确检查代码流,则会发现您在保留令牌。
首先,您将打开文件并将其传递给connect_vpn
的{{1}}方法,以读取第一个标记。
然后在mon_back.py
文件中检查条件mon_back.py
的值是否再次打开同一文件并读取令牌,以便它再次获取第一个令牌。之后,您将调用相同的方法h
并再次检查self.connect_vpn
的条件并重新打开文件,以便它再次读取第一个令牌。
请检查您的代码流并进行更正。
一种解决方案是,在这种情况下,您不需要写任何东西,只需从那里返回或打印消息或错误日志并返回,以便流程可以转到h
,并使用第二个令牌返回到{ {1}}方法
答案 1 :(得分:0)
更改位于下面的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循环中更改后,它将增加令牌索引。谢谢。