Найти - Пользователи
Полная версия: Определение пользователей выполняющих комманду и запись в журнал.
Начало » Центр помощи » Определение пользователей выполняющих комманду и запись в журнал.
1
kilZHlik
Прошу помочь. есть код который слушает порт на сервере и при подключении по 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
В общем не важно каким способом, но нужно заставить пользователя идентифицировать себя, например создав базу паролей и при введении указанного в базе пароля разрешать ввод дальнейших команд при выполнении которых происходила бы запись в журнал с указанием имени пользователя сопоставленного по паролю и времени запуска команды. Как то так..
JOHN_16
kilZHlik
перенес в другой раздел
py.user.next
kilZHlik
Как научить этот скрипт получать имя пользователя
Нужно сделать конечный автомат. В нём делается состояние, когда пользователь не вошёл. В этом состоянии ему предлагается войти (ожидается команда от него). Когда он вводит команду, ему предлагается ввести имя и пароль. Он вводит, оно проверяется по файлу. Если подходит, конечный автомат переходит в состояние, когда пользователь вошёл. В этом состоянии он может выполнять другие команды (они становятся доступны). Если не подходит, то конечный автомат остаётся в состоянии, когда пользователь не вошёл.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB