【问题标题】:Python ssh2 connection with linuxPython ssh2 与 linux 的连接
【发布时间】:2019-09-28 01:00:15
【问题描述】:

我正在尝试使用 ssh2 和 Python 从我的笔记本电脑(本地)执行一些命令到我的专用机器。 当我尝试使用 ls 命令显示所有文件时,我总是收到此消息。

>     Linux v2 5.2.13-gs-md #5213 SMP Sun Sep 8 01:47:29 CEST 2019 x86_64
>     
>     The programs included with the Debian GNU/Linux system are free software;
>     the exact distribution terms for each program are described in the
>     individual files in /usr/share/doc/*/copyright.
>     
>     Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
>     permitted by applicable law.

这是我的代码。

import socket, time
from ssh2.session import Session

host = '11.22.33.44.55'
user = 'root'
password = 'itssecret'

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((host, 2244))

session = Session()
session.handshake(sock)
session.userauth_password(user, password)

channel = session.open_session()
channel.shell()

channel.write("cd /")
channel.write("ls")
time.sleep(1)


size, data = channel.read()
print(data.decode())

channel.close()

即使我只尝试cd / 我也有相同的输出。

【问题讨论】:

  • 这是每次登录服务器时显示的/etc/issue 文件的内容。
  • 我尝试使用paramiko 通过SSH 连接到我的Linux 机器,没有出现这样的问题。 paramiko.org
  • 如果您对服务器进行交互式 ssh,您难道看不到吗?
  • Paramiko 可能没有进行交互式登录,ssh2.session 是。
  • 所以实际上我已经登录了,但我什么也做不了?

标签: python linux ssh


【解决方案1】:
channel.write("cd /")
channel.write("ls")

这只是将cd /ls 写入会话。如果您登录 SSH 会话并点击 cd /ls 很可能在您点击回车之前什么都不会发生,然后您就不会执行您想要的两个命令。

您可以发送换行符,但更好的是使用库的内置系统发送命令,并验证命令是否完成,连接本身是否干净关闭:

channel.execute('cd /')
channel.execute('ls')
channel.wait_eof()
channel.close()
channel.wait_closed()

【讨论】:

  • 这对我不起作用。我在第二个 execute() 命令上收到 ssh2.exceptions.BadUseError。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2014-06-01
  • 1970-01-01
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多