Регулярное выражение для соответствия подсказке в 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 # '
достаточно.
Должен был попробовать это раньше..:)