无法使用ssh2-python软件包将命令发送到远程计算机

问题描述 投票:0回答:1

问题

你好,我的问题是我想使用ssh2-python包来远程读取一堆文件,但是我似乎无法将命令发送到远程主机。

最初,我从paramiko软件包开始,但是确实可以使用它,但是我要处理很多大内存文件(这就是为什么我不能将它们带到本地计算机上的原因),而且它有点太慢。我目前正在运行Python 3.6.3和ssh2-python 0.18.0.post1,并尝试更改ssh2-python的版本,但这没有帮助。

代码

import socket
from ssh2.session import Session

host_ip=socket.gethostbyname('hostname')
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host_ip,22))
session=Session()
session.handshake(sock)
print(session.userauth_list('username'))
session.userauth_password('username','password')
channel=session.open_session()
channel.execute('echo Hello')

代码打印以下内容

0

[['publickey','gssapi-keyex','gssapi-with-mic','password']

0

0

期望/想法

我希望代码打印出Hello,但是它只打印了0。在握手之后以及在调用身份验证方法之后,它也打印了0,我不知道为什么。好像我正在与远程计算机联系,因为它确实打印出需要进行的身份验证,但是在我看来,我实际上并未登录并且可以执行任何操作。我真的很想使用这个软件包,因为从网上阅读的内容来看,paramiko的速度要快得多,(替代方案也可以),但是我似乎无法弄清楚这里发生了什么。

请先帮助并表示感谢!

问题您好,我的问题是我想使用ssh2-python软件包来远程读取一堆文件,但是我似乎无法将命令发送到远程主机。最初,我以...

handshake libssh2 ssh2
1个回答
0
投票

您实际上可能已经连接并正在执行命令,但是channel.execute('ls')返回'0'(它是退出/状态代码)。

© www.soinside.com 2019 - 2024. All rights reserved.