Ну, вы можете получить что-то очень похожее, используя витой люк, который
работает так:
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()
Тогда вы просто входите в программу через ssh;
$ ssh admin@localhost -p 2222
admin@localhost's password:
Использование foobar в качестве пароля.
Когда вы войдете в систему, вы получите обычное приглашение на Python, где вы можете просто ткнуть в данные.
Это не совсем то же самое, что отправка трассировки на хост.
Теперь, это может быть сложно интегрировать в программу с графическим интерфейсом, в этом случае вам может потребоваться выбрать другой реактор, например, для программ на основе gtk, использующих gtk2reactor и т. Д.
Если вы хотите, чтобы фактическая трассировка возвращалась, вам нужно создать сокет-канал для stderr, stdin и stdout, который будет передаваться по сети вместо печати на локальный хост. Не должно быть слишком сложно выполнить с использованием витой.