Есть код который должен слушать порт на сервере и при подключении к нему клиента по 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('gets+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()
Опубликован 21.01.2016 в 01:39 Последнее изменение: 21.01.2016 в 01:56
Заказ находится в архиве