Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2016 00:06:17

kilZHlik
Зарегистрирован: 2016-01-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение пользователей выполняющих комманду и запись в журнал.

Прошу помочь. есть код который слушает порт на сервере и при подключении по 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)

Офлайн

#2 Янв. 21, 2016 00:45:46

kilZHlik
Зарегистрирован: 2016-01-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Определение пользователей выполняющих комманду и запись в журнал.

В общем не важно каким способом, но нужно заставить пользователя идентифицировать себя, например создав базу паролей и при введении указанного в базе пароля разрешать ввод дальнейших команд при выполнении которых происходила бы запись в журнал с указанием имени пользователя сопоставленного по паролю и времени запуска команды. Как то так..

Офлайн

#3 Янв. 21, 2016 01:16:12

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Определение пользователей выполняющих комманду и запись в журнал.

kilZHlik
перенес в другой раздел



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Янв. 21, 2016 12:14:39

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Определение пользователей выполняющих комманду и запись в журнал.

kilZHlik
Как научить этот скрипт получать имя пользователя
Нужно сделать конечный автомат. В нём делается состояние, когда пользователь не вошёл. В этом состоянии ему предлагается войти (ожидается команда от него). Когда он вводит команду, ему предлагается ввести имя и пароль. Он вводит, оно проверяется по файлу. Если подходит, конечный автомат переходит в состояние, когда пользователь вошёл. В этом состоянии он может выполнять другие команды (они становятся доступны). Если не подходит, то конечный автомат остаётся в состоянии, когда пользователь не вошёл.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version