Eh bien, vous pouvez obtenir quelque chose de tout à fait similaire à l'aide d'une entorse à une bouche d'égout, qui
fonctionne comme ceci:
from twisted.internet import reactor
from twisted.cred import portal, checkers
from twisted.conch import manhole, manhole_ssh
def getManholeFactory(namespace):
realm = manhole_ssh.TerminalRealm()
def getManhole(_):
return manhole.Manhole(namespace)
realm.chainedProtocolFactory.protocolFactory = getManhole
p = portal.Portal(realm)
p.registerChecker(
checkers.InMemoryUsernamePassword DatabaseDontUse(admin='foobar'))
f = manhole_ssh.ConchFactory(p)
return f
reactor.listenTCP(2222, getManholeFactory(globals()))
reactor.run()
Ensuite vous suffit de vous connecter à ce programme au cours de ssh;
$ ssh admin@localhost -p 2222
admin@localhost's password:
À l'aide de foobar comme mot de passe.
Lorsque vous vous connectez, vous obtiendrez un normal invite python où vous pouvez simplement vous piquez les données.
Ce n'est pas tout à fait la même que l'obtention d'un traceback envoyés à un ordinateur hôte.
Maintenant, cela peut être difficile à intégrer à un programme GUI, dans ce cas, vous pourriez avoir besoin de choisir un autre réacteur, par exemple pour gtk en fonction des programmes utilisés le gtk2reactor etc.
Si vous souhaitez que le réel traceback envoyé plus de vous avez besoin pour créer un socket canal pour les deux stderr, stdin et stdout qui se passe sur le réseau au lieu d'imprimer sur votre machine locale. Ne devrait pas être trop difficile à réaliser en utilisant tordu.