我正在使用python pexpect模块登录网络设备。我已将所需的代码放入函数中并且它成功运行,但是在函数完成后我想继续在我的脚本中继续使用该实例。我不确定我需要从函数返回什么才能工作。
功能
def logon(device):
p = pexpect.spawn('ssh username@' + device, timeout=10)
x = p.expect (['yes/no','password:'])
if x==0:
p.sendline('yes')
y = p.expect(['password:'])
if y==0:
p.sendline(PW)
z = p.expect(['#'])
if z==0:
print('Successfully logged onto ' + device)
else:
print('Failed to log onto device ' + device)
if x==1:
p.sendline(PW)
z = p.expect(['#'])
if z==0:
print('Successfully logged onto ' + device)
else:
print('Failed to log onto device ' + device)
else:
print('Failed to log onto device ' + device)
return p
logon(device)
p.sendline('show clock')
p.expect('#')
该函数按预期工作,我收到消息'成功登录到设备',我认为传回'p'值将允许我继续使用pexpect实例。但是我收到以下错误。
p.sendline('show clock')
NameError: name 'p' is not defined
有没有办法从功能中传回一切?也许我误解了我需要从函数返回的内容才能使其工作。
答案 0 :(得分:1)
而不是
logon(device)
DO
p=logon(deive)
是的,你可以使用swapn where返回的对象