Форум сайта python.su
Прошу помочь. есть код который слушает порт на сервере и при подключении по telnet на порт 52001 выполняет по команде get srvstat некоторые консольные программы.
Как научить этот скрипт получать имя пользователя и/или имя компьютера клиента, который к нему подключается и записывать эту информацию в файл?
#!/usr/bin/python import os. re from socket import * class Srvstat: def __init__(self, host='serverhost.ru', port=52001): self.socket = socket(AF_INET, SOCK_STREAM) self.socket.bind((host, port)) self.socket.listen(5) def process(self): while 1: csocket, caddress = self.socket.accept() csocket.send('Connection established. Ready for request.\n') while 1: request = csocket.recv(64) if re.match('get\s+srvstat', request, re.IGNORECASE): csocket.send(os.popen('/usr/bin/vmstat 1 10').read()) csocket.send(os.popen('/usr/bin/netstat -ta').read()) elif re.match('quit', request, re.IGNORECASE): break else: csocket.send('Unknown command.\n') csocket.close() if __name__ == '__main__': serv = Srvstat() serv.process()
Отредактировано kilZHlik (Янв. 21, 2016 00:09:50)
Офлайн
В общем не важно каким способом, но нужно заставить пользователя идентифицировать себя, например создав базу паролей и при введении указанного в базе пароля разрешать ввод дальнейших команд при выполнении которых происходила бы запись в журнал с указанием имени пользователя сопоставленного по паролю и времени запуска команды. Как то так..
Офлайн
kilZHlik
перенес в другой раздел
Офлайн
kilZHlikНужно сделать конечный автомат. В нём делается состояние, когда пользователь не вошёл. В этом состоянии ему предлагается войти (ожидается команда от него). Когда он вводит команду, ему предлагается ввести имя и пароль. Он вводит, оно проверяется по файлу. Если подходит, конечный автомат переходит в состояние, когда пользователь вошёл. В этом состоянии он может выполнять другие команды (они становятся доступны). Если не подходит, то конечный автомат остаётся в состоянии, когда пользователь не вошёл.
Как научить этот скрипт получать имя пользователя
Офлайн