1
나는 파이썬 TCP 셸에서 일하고있다; telnet으로 포트에 연결하고 쉘을 사용하여 프롬프트를 표시하고 싶습니다. 예.파이썬에서 bash 쉘을 제거하려면 어떻게해야합니까?
$ telnet localhost 5555
Connected to localhost.
Escape character is '^]'.
$
내 대답을 얻는 데 큰 도움이되었습니다. 여기에 작동 코드가 있습니다.
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. 당신이 당신의 쉘 명령 행에서 "/ 빈/tcsh의"를 실행하면 어떻게됩니까? 2. tcsh! = bash. bash는/bin/bash에있을 수 있습니다. run 'which bash' – Paul
@Paul : "잘못된"쉘이 실행 되었기 때문이 아닙니다. 왜냐하면'popen'은 대화 형 셸과 같은 대화 형 작업을 수행하는 올바른 도구가 아니기 때문입니다. –
파이썬 커맨드 라인 >>>과 쉘 프롬프트를 동시에 얻을 수 있습니까? – Paul