Я пытаюсь сделать клиент-серверный проект. В этом проекте я должен отправить команду linux с клиента на сервер. Теперь я могу отправить некоторые команды, такие как ls, pwd et c. и они работают правильно, и я могу прочитать вывод в клиентском терминале, но когда я пытаюсь отправить команду "cd", я не получаю никакой ошибки, но каталог на сервере не изменяется. Если я использую команду os.chdir (os.path.abspath (data)) вместо subprocess.check_output, она может изменить каталог, но это бесполезно, потому что я могу отправлять другие команды, такие как ls, pwd, mkdir et c. Спасибо за вашу помощь
на стороне сервера:
def threaded(c):
while True:
# data received from client
data = c.recv(1024)
if not data:
print('Bye')
break
try:
data_o = subprocess.check_output(data, shell=True)
except subprocess.CalledProcessError as e:
c.send(b'failed\n')
print(e.output)
if(len(data_o) > 0):
c.send(data_o)
else:
c.send(b'There is no terminal output.')
# connection closed
c.close()
на стороне клиента:
while True:
# message sent to server
s.send(message.encode('ascii'))
# messaga received from server
data = s.recv(1024)
# print the received message
print('Received from the server :',str(data.decode('ascii')))
# ask the client whether he wants to continue
ans = input('\nDo you want to continue(y/n) :')
if ans == 'y':
message = input("enter message")
continue
else:
break
# close the connection
s.close()