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

时间:2018-03-28 14:10:37

标签: python prompt pxssh

我在pxssh中使用Python3.6来通过脚本来玩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和/或pxssh支持这个吗?

1 个答案:

答案 0 :(得分:0)

好吧看起来很简单:

prompt = r'(Something .+ # )'

而不是:

prompt = 'Something # '

就够了。

应该早点尝试过.. :)