2

プログラムでSSH2サーバーに接続するためにlibssh2のPythonバインディングを使用しています。受信した出力はリモートサーバーに転送され、そこで表示されます。

以下のコードは正しく機能しますが、結果はモノクロで表示されます。色を表示したり、少なくとも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バインディングのシンプルさとドキュメントが気に入りました...他の提案も受け付けています。

4

1 に答える 1

2

paramikopythonライブラリを調べることができます。さまざまなPython情報へのリンクを含む、詳細を説明する優れたブログ投稿がここにあります。paramikoが制御コードをどのように処理するかはわかりませんが、理論的には、少なくとも戻りデータでそれらを確認できます。

シェルの呼び出しを扱っているドキュメントのセクションを確認すると、ターミナルエミュレーションを設定できます。

于 2011-10-03T14:46:08.323 に答える