nettips.ru

Простой скрипт syslog сервера на Python

На главную Cisco Systems VoIP маршрутизатор Беларусь Asterisk коммутатор Arduino Nateks Alcatel MTS Velcom Gigaset Android ZTE Python Grandstream Huawei админы шутят о сайте Zelax Allied Telesis D-Link Штрихкоды HP
Телефонные номера доступа sip операторов Телефонные коды городов и стран мира.

Рейтинг статьи: 4.000/5 Рейтинг 4.00 из 5Рейтинг 4.00 из 5Рейтинг 4.00 из 5Рейтинг 4.00 из 5Рейтинг 4.00 из 5 (1 голосов).

Скрипт на 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 Сетевые инструменты

Пожалуйста, оцените и ВЫ эту статью:

Комментариев нет. Снаньте первым!


Ваши отзывы и предложения по работе сайта направляйте на форму обратной связи.

Яндекс.Метрика