1
Je travaille sur un shell python tcp; Je voudrais être en mesure de telnet à un port, et le faire m'indiquer avec un shell: ex.Comment abandonner un shell bash depuis Python?
$ telnet localhost 5555
Connected to localhost.
Escape character is '^]'.
$
La réponse ci-dessous a été très utile pour me mettre sur la bonne voie. Voici le code de travail.
import SocketServer, os, subprocess
class EchoRequestHandler(SocketServer.BaseRequestHandler):
def setup(self):
print self.client_address, 'connected!'
self.request.send(str(self.client_address) + '\n')
self.request.send(os.system('sh'))
def handle(self):
data = 'dummy'
while data:
data = self.request.recv(1024)
self.request.send(os.popen(data.strip()).read())
if data.strip() == 'bye':
return
def finish(self):
print self.client_address, 'disconnected!'
self.request.send('bye ' + str(self.client_address) + '\n')
server = SocketServer.ThreadingTCPServer(('', 7784), EchoRequestHandler)
server.serve_forever()
1. Qu'est-ce qui se passe si vous exécutez "/ bin/tcsh" de votre ligne de commande shell? 2. tcsh! = Bash. bash peut être dans/bin/bash. run 'which bash' – Paul
@Paul: Ce n'est pas à cause du "mauvais" shell en cours d'exécution. C'est parce que «popen» n'est pas le bon outil pour faire quoi que ce soit d'interactif, comme un shell interactif. –
Pourriez-vous obtenir une ligne de commande python >>> et une invite de shell en même temps? – Paul