Как мне преобразовать данные в строку
я пытаюсь сделать свою собственную корневую оболочку для своего сервера, чтобы я мог работать на внутренней стороне его, но каждый раз, когда я пытаюсь проверить, есть ли вход == "выход", он просто не проверяет его и продолжает. извините, что это написано неправильно, я не англичанин. я просто не могу понять, что я делаю не так. кроме того, я пытаюсь работать с несколькими клиентами и буду добавлять логин, и мне нужно знать, как сравнить данные recv и проверить их, чтобы логин работал, и я просто не знаю, что происходит не так.
Что я уже пробовал:
import socket import threading import json import hashlib from subprocess import PIPE, Popen decode_utf8 = lambda data: data.decode("utf-8") def main(): s = socket.socket() s.bind(('127.0.0.1', 12344)) s.listen(5) while True: r, addr = s.accept() print("Connected to by {}".format(str(addr))) threading.Thread(target=login(r)).start() def login(r): read = open('data.json', 'r') data = json.load(read) while True: input_user = r.recv(1024) user = decode_utf8(input_user) try: password = data[str(user)]['password'] input_user = r.recv(1024) pwd = decode_utf8(input_user) passdata = hashlib.sha256(pwd.encode().hexdigest() if passdata == password: rootShell(r) else: r.send('Wrong Password or Username') r.close() except: r.send('Wrong Password or Username') r.close() def rootShell(r): while True: input_data = r.recv(1024) data = decode_utf8(input_data) print(data) try: if data.lower().startswith("exit"): r.send('Goodbye and see you later') r.close() else: r.send(cmdline(data)) except: r.send("Error Running Command") def cmdline(command): process = Popen( args=command, stdout=PIPE, shell=True ) return process.communicate()[0] main()
Richard MacCutchan
Добавьте некоторый код, чтобы точно отобразить то, что было получено первым, и каков результат после вызова decode_utf8(input_data)
Не стоит просто предполагать, что ваш код будет работать.
WOLF 2018
я показал свою работу, и она выглядела прекрасно, но я все еще не могу сравнить.
это я подключаюсь к нему
root@Unknown:~# nc 127.0.0.1 12344
whoami
корень
это вывод скрипта python
каталог /usr/Бен/вместо python2.7 /root/wolf-python-projects/server.py
Подключено к ('127.0.0.1', 39468)
whoami
root-это то, что сервер сказал мне, что я есть. (ну да, я корень)
Richard MacCutchan
Но вы не показали данные, которые вы вводите, и то, что Python интерпретирует их как.
WOLF 2018
я набрал whoami