正则表达式以匹配 pxssh 中的提示

Regexp to match prompt in pxssh

我正在 Python3.6 中使用 pxssh 通过编写脚本来使用 SSH。

一切正常,但我有一个小问题。

我正在登录 SSH 的机器上的提示根据我发送的一些命令而改变(不是全部!)

这是我的脚本代码

from pexpect import pxssh
from codecs import encode

ip = xxx.xxx.xxx.xxx
username = 'user'
password = 'pass'
prompt = 'Something # '

s = pxssh.pxssh()

def send_cmd(s, cmd):
    "A simple generic function to send a command via SSH and printing it's result"
    s.sendline(cmd)
    s.prompt(timeout=1)
    print('*'*20)
    print((s.before).decode("utf-8"))
    return

if not s.login (ip, username, password, auto_prompt_reset=False):
    print('SSH session failed on login')
    print(str(s))
else:
    print('SSH session login successful')
    s.PROMPT = prompt
    send_cmd(s, 'commands')
    send_cmd(s, 'end')
    s.logout()
    print('Logged out of SSH session')

以下是一些提示示例: Something # Something (toto) # Something (tata) # Something (...) #

所以我想知道是否可以做一个正则表达式来匹配它,这样当我调用 s.before 时,我就不会得到提示。

我知道在 Ruby 我可以做这样的事情

(Something \(.+\)# )

Python and/or pxssh 支持这个吗?

嗯,看起来很简单:

prompt = r'(Something .+ # )'

而不是:

prompt = 'Something # '

够了。

早该尝试一下.. :)