系统相关
首页 > 系统相关> > python-在pexpect中捕获即将死去的进程

python-在pexpect中捕获即将死去的进程

作者:互联网

我正在写一些pexpect的东西,这些东西基本上是通过telnet发送命令的.

但是,我的telnet会话可能会死掉(由于网络问题,电缆被拔出等等).

我该如何初始化telnet会话,以便它死亡时可以捕获并告诉它重新连接,然后继续执行其所在的代码.

这可能吗?

解决方法:

恕我直言,使用当前维护的库(例如exscripttelnetlib)通常会更好,但是有效的方法是:

import pexpect as px

cmds = ['cmd1', 'cmd2', 'cmd3']
retcode = -1
while (retcode<10):
    if (retcode<2):
        child = px.spawn('telnet %s %s' % (ip_addr,port))
    lregex = '(sername:)'            # Insert regex for login prompt here
    pregex = '(prompt1>)|(prompt2$)' # Insert your prompt regex here
    # retcode = 0 for px.TIMEOUT, 1 for px.EOF, 2 for lregex match...
    retcode = child.expect([px.TIMEOUT, px.EOF, lregex, pregex],timeout = 10)
    if (retcode==2):
        do_login(child)  # Build a do_login() method to send user / passwd
    elif (2<retcode<10) and (len(cmds)>0):
        cmd = cmds.pop(0)
        child.sendline(cmd)
    else:
        retcode = 10

标签:pexpect,expect,python
来源: https://codeday.me/bug/20191102/1993752.html