Fabric没看到密码:提示通过SSH的远程设备(Aruba Mobility Master)。
我编写的脚本是使用fabric2和Python3登录到远程网络设备,并运行命令将文件从该设备SCP传输到另一设备。运行SCP命令后,设备会要求输入密码。在普通的SSH客户端上运行时,此提示是可见的,但在使用结构运行时,则不可见。
我已经用pty = False和pty = True进行了测试
脚本也不会像等待输入一样挂起。只是继续,SCP失败并输入了错误的密码。
密码提示有点特殊,它会回显带有星号(*)的字符,而不是完全不回显任何内容。
网络设备不提供普通的bash shell。相反,它是供应商特定的外壳(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文件中捕获“ Password:”。