Python中的SSH网关 - 可用的颜色?

2 投票
1 回答
874 浏览
提问于 2025-04-17 03:35

我正在使用libssh2的Python绑定来编程连接SSH2服务器。接收到的输出需要转发到一个远程服务器并在那里显示。

下面的代码可以正常工作,但它显示的结果是单色的。我想知道如何才能显示颜色,或者至少获取VT100终端控制的转义序列,这样我就可以用HTML标签来替换它们。

import socket
import libssh2
import os

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 22))
session = libssh2.Session()
session.startup(sock)
session.userauth_password("test", "test")
channel = session.channel()
channel.execute('ls -al /')

stdout = []
stderr = []
while not channel.eof:
    data = channel.read(1024)
    if data:
        stdout.append(data)

    data = channel.read(1024, libssh2.STDERR)
    if data:
        stderr.append(data)

print (''.join(stdout))
print (''.join(stderr))

如果需要的话,我可以使用其他的SSH库,我只是觉得libssh2绑定简单且文档清晰……我也欢迎其他建议。

1 个回答

2

你可以看看paramiko这个Python库。这里有一篇很不错的博客,详细介绍了相关内容,并提供了各种Python信息的链接,可以点击这里查看。我不太确定paramiko是怎么处理控制代码的,但理论上,它至少能让你在返回的数据中看到这些代码。

如果你查看文档中关于调用shell的部分,它允许你设置终端仿真。

撰写回答