使用 PySFTP 在 shell 脚本中通过 user/pass 提示

Get past user/pass prompt in a shell script using PySFTP

我正在使用 pysftp 连接到服务器。使用 .execute 功能发送命令效果很好。有效示例:

SftpConn.execute('cd ' + RemotePath + ';gzgrep -l ' + eventid + ' ' + ModuleId + '*')

但现在我有一个要执行的 shell 脚本,它会提示我输入用户名和密码。我似乎无法传递该信息。

    conn = pysftp.Connection(host=server, username=user, password=pw, cnopts=cnopts)
    conn.put(localpath, remotepath) 
    print('0')
    conn.execute('sh /home/tools/testtool')
    time.sleep(.5)
    print('1')
    conn.execute(user2)
    time.sleep(.5)
    print('2')
    conn.execute(pw2)

这会打印 0 然后卡住。我认为这是因为 conn.execute('sh /home/tools/testtool') 命令正在等待一个永远不会出现的 return 值。任何想法如何让这一切继续下去?我可以让它超时,或者更好的是,发送一个不需要 return 值的命令吗?

在搜索 Paramiko 而不是 pysftp 之后,我认为这个帖子有答案。

Running interactive commands in Paramiko