0
我被困在一个我正在尝试使用的项目上。现在我正试图设置一个脚本(这一个)在本地机器上打开一个端口,这将使我能够访问它上面的运行命令。我正在使用Netcat连接到它。现在它可以让我连接到netcat,然后我可以输入1个命令,它会给我输出和停止。当我在while循环之外移动“conn,addr = s.accept()”时,我能够反复运行命令,并且在某些情况下应该像它应该那样工作。但是当我尝试运行“cd ..”来返回一个目录时,它不会让我。我不确定我是否缺少一些东西。如何用套接字向Python服务器重复命令?
host = ''
port = 12345
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket has been created.")
try:
s.bind((host, port))
except socket.error:
print("Bind failed.")
sys.exit()
print("Socket bind complete.")
s.listen(5)
print("Socket is now listening.")
while 1:
conn, addr = s.accept()
print("Connected with {0}:{1}".format(addr[0], addr[1]))
data = conn.recv(1024)
string_data = data.decode('utf-8')
proc = subprocess.Popen(string_data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
stdout_value = proc.stdout.read() + proc.stderr.read()
conn.sendall(stdout_value)
#conn.close()
#s.close()
我想启动一次shell并与之通话。但不知道如何做到这一点。任何可以让我朝着正确方向的提示? – sqlsqlsql