使用pexpect建立连接的更好方法

问题描述 投票:1回答:1

我正在尝试通过以下方式使用pexpect建立连接-

child = pexpect.spawn('telnet {console_ip} {console_port}'.format(console_ip=self.obj.get("console_ip"),
                                                                      console_port=int(self.obj.get("console_port"))))
while True:
        index = child.expect(
            ["Hit 'c' key to stop autoboot:", "prompt#", "ARGUS", "Loading:", ".*login:", "Escape character is",
             "Press \[Ctrl+D\] to go to the Suspend Menu", "Please enter your name:"])
        if index == 0:
            child.sendline("ccccc\n")
        elif index == 1:
            time.sleep(1)
            child.sendline("\r run net \r")
            time.sleep(1)
        elif index == 2:
            time.sleep(1)
            child.sendline("\r reset \r")
            time.sleep(5)
        elif index == 3:
            time.sleep(1)
            time.sleep(3)
            break
        elif index == 4:
            child.sendline(user_name+"\r")
        elif index == 5:
            time.sleep(1)
            child.sendline(password+"\r")
        elif index == 6:
            time.sleep(1)
            child.sendline("\r")
        elif index == 7:
            time.sleep(1)
            child.sendline("\r")
        elif index == 8:
            time.sleep(1)
            child.sendline("abcde\r")

我想知道是否有更好的方法用更少的代码来实现相同的功能。

python pexpect remote-connection
1个回答
0
投票

减少行数不是必须的,但是尝试提供结构并减少重复可能是必须的。使提示字符串及其对应的动作更靠近在一起会很好。例如,您可以将提示“命中'c'键...”配对成一个元组,而发送行字符串则答复“ ccccc \ n”,然后创建所有这些的数组。然后,您可以删除if并在已索引的元组上执行调用sendline的常见操作。

© www.soinside.com 2019 - 2024. All rights reserved.