Рейтинг статьи: 4.500/5 (2 голосов).
Скрипт на Python syslog сервера с разделением файлов протоколов по дате.
Спонсор этой страницы:
Описание скрипта
Скрипт прослушивает 514 UDP порт, принимает log сообщения от сетевого оборудования и сохраняет структурировано в папках год/месяц
Скрипт простого сервера
HOST, PORT = "0.0.0.0", 514
mpath = 'datelog'
import os
import socketserver
from datetime import datetime, date, time
def log_path_file():
today = datetime.now()
path=mpath+"\\"+today.strftime("%Y\\%m\\")
if not os.path.exists(path):
os.makedirs(path)
print("create "+path)
path+=today.strftime("%d-%m-%Y.log")
return path
class SyslogUDPHandler(socketserver.BaseRequestHandler):
def handle(self):
data = bytes.decode(self.request[0].strip())
syslog_mass=str(data).split(':')
err_level_0=syslog_mass[0]
err_level=int(err_level_0[err_level_0.find("<")+1:err_level_0.find(">")]) & 7
syslog_str=str(self.client_address[0])+" "
syslog_str1=str(data)[str(data).find(":"):]
config_file_name = log_path_file()
config_file = open(config_file_name, 'a')
write_msg=syslog_str+": "+str(err_level)+syslog_str1
config_file.write(write_msg+"\n")
config_file.close()
print(write_msg)
if __name__ == "__main__":
try:
server = socketserver.UDPServer((HOST,PORT), SyslogUDPHandler)
server.serve_forever(poll_interval=0.5)
except (IOError, SystemExit):
raise
except KeyboardInterrupt:
print ("Crtl+C Pressed. Shutting down.")
Доработка скрипта, добавление фильтров
архив со скриптом syslog_python.zip
Содержание архива
syslog.py - скрипт syslog
filter.ini - Пример фильтров
Описание доработок
Кроме того, что все проходящие сообщения складываются в один файл, они дополнительно дублируются в другие файлы по фильтрам:
Фильры:
- Адрес устройства принадлежит сети
- Текст сообщения содержит слово (например имя администратора)
- сообщение определенного уровня
В фильтре можно указывать (конструировать) имя папки и файла включая туда текущие дату, время, IP адрес и уровень сообщения
Пример filter.ini
# 1 type (ip/msg/level)
# 2 Network, substring msg or level msg
# 3 Folder %Y\%m 2023\08
# 4 FileName (optional) %d-%m-%Y.log - 30-08-2023.log , %IP.log - 10.206.244.2.log %L - LeveName %l - Level
! Branch1
ip 192.168.222.0/24 %Y\%m\Moscow
ip 192.168.249.0/24 %Y\%m\SPB
! Other
msg admin %Y\%m\Admin\admin %IP.log
level 0 %Y\%m\level\%l_%L %IP_%d-%m-%Y.log
level 1 %Y\%m\level\%l_%L %IP_%d-%m-%Y.log
level 2 %Y\%m\level\%l_%L %IP_%d-%m-%Y.log
Полезные ссылки
Скачать Python можно на сайте www.python.org
Полезной будет книга Python для сетевых инженеров
Буду рад полезным идеям.
Программирование Python Сетевые инструменты
Комментариев нет. Станьте первым!