Регулярное выражение для соответствия подсказке в 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 ответ

Решение

Ну, это кажется простым:

prompt = r'(Something .+ # )'

вместо:

prompt = 'Something # '

достаточно.

Должен был попробовать это раньше..:)

Другие вопросы по тегам