Проблема с захватом пароля: запрос на удаленном устройстве - PullRequest
3 голосов
/ 20 июня 2019

Fabric не видит приглашение Password: для удаленного устройства (Aruba Mobility Master) по SSH.

Сценарий, который я написал, использует fabric2 и Python3 для входа на удаленное сетевое устройство и запускает команду для SCPфайл с этого устройства на другое устройство.После выполнения команды SCP устройство запрашивает пароль.Это приглашение отображается при работе с обычным клиентом SSH, но не отображается при работе с фабрикой.

Я протестировал с pty = False и pty = True

Скрипт не зависает какего ожидание ввода либо.Он просто продолжается, и SCP не работает с неверным паролем.

Запрос на ввод пароля является немного особенным в том смысле, что он будет отображать символы со звездочками (*) вместо того, чтобы вообще ничего не отображать.

Сетевое устройство не обеспечивает нормальную оболочку bash.Вместо этого это специфическая для поставщика оболочка (Aruba / HPE).Устройство "Aruba Mobility Master"

from invoke import Responder

scppass = Responder(
    pattern=r'Password:',
    response='MyPassword\n',
)

connect_kwargs = {"password": "LoginPassword"}
c = Connection(host="1.2.3.4", user="username", connect_kwargs=connect_kwargs)

# Have tried with pty=False and pty=True
c.run("copy flash: configbackup.tar.gz scp: 2.3.4.5 username /PATH/configbackup.tar.gz", pty=True, watchers=[scppass])

Так выглядит при запуске из интерактивного сеанса SSH

Password:*********************


Secure file copy:
Press 'q' to abort.
....
File uploaded successfully

Это вывод из фабрики

Secure file copy:
Press 'q' to abort.
............
Error copying file:
Permission denied: wrong username or password

Также пробовал с

ssh username@1.2.3.4 "copy flash: nothng scp: 2.3.4.5 user /something/asd" >out 2>err

ssh -t username@1.2.3.4 "copy flash: nothng scp: 2.3.4.5 user /something/asd" >out 2>err

Ни один из них не захватывает "Пароль:" ни в файле stdout, ни в stderr.

...