从函数返回Pexpect Spawn实例

时间:2013-11-22 12:22:16

标签: python function pexpect

我正在使用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

有没有办法从功能中传回一切?也许我误解了我需要从函数返回的内容才能使其工作。

1 个答案:

答案 0 :(得分:1)

而不是

logon(device)

DO

p=logon(deive)

是的,你可以使用swapn where返回的对象