热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python服务器日志编写_【Python】Syslog日志服务器开发部署(12.5更新)

今天不废话,直奔主题。说说怎么用,免得大家伙一头雾水,不知道怎么运行。下载一个python3.8,这不重要python3都行

今天不废话,直奔主题。

说说怎么用,免得大家伙一头雾水,不知道怎么运行。

下载一个python3.8,这不重要python3都行,然后安装。

将以下文件拷贝成一个.py文件,如:Syslog.py

#!/usr/bin/python3

import os

import socket

import time

DevList = [

[5,'LWCO-N6/7-U41-SW-6800-POC'],

[3,'HZXY-38-A05-SLB-1'],

[3,'HZYX-38-A05-LLB-1'],

[3,'HZLW-N01-5208-LLB-1'],

[3,'HZLW-N01-5208-SLB-1']

]

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

server.bind(('10.213.8.112', 514))

def SyslogToFile():

while True:

data = server.recvfrom(8092)

(LogMsg, host) = data

LogMsg = LogMsg.decode()

print(LogMsg)

LogMsgList_ = LogMsg.split(' ')

LogMsgList = []

for i in LogMsgList_:

if i != '':

LogMsgList.append(i)

for i in DevList:

if LogMsgList[i[0]] == i[1]:

with open(FileName(i[1]),mode='a') as f:

f.write(LogMsg+'\n')

else:continue

def FileName(hostname):

Asctime_ = time.asctime().split(' ')

Asctime = []

for i in Asctime_:

if i != '':

Asctime.append(i)

Day = "-".join([Asctime[4], Asctime[1], Asctime[2]])

Path = r'D:\SyslogData'

if os.path.exists(Path+'/%s'%Day) == False:

NewDir = Path + './%s'%Day

os.mkdir(NewDir)

else:

NewDir = Path + './%s'%Day

hostname = hostname.replace("/","")

filename = NewDir +'./'+ hostname

return filename

SyslogToFile()

管理员身份运行IDLE

File 打开Syslog.py

Run —— Run... Customized

忽略弹出的对话框,直接OK,然后,程序就运行了,就可以接收syslog了。

哟西。

以上,就上syslog服务器的运行。

接下来,请自行创建D:\SyslogData文件夹,不然会报错。

然后怎么发日志呢,以一台H3C交换机为例:

info-center loghost 10.213.8.112

info-center source default loghost level informational

好了,

完成。

程序什么功能?

将每天收到的syslog日志根据主机hostname的不同进行分类存储&#xff0c;大概算了下&#xff0c;每台网络设备每天产生的日志(info级别)<10M&#xff0c;那么我们有100台网络设备&#xff0c;一天产生的日志<1G&#xff0c;那么一年365天所需要的存储空间为&#64;#&#xffe5;%……&*。。。 反正也不多的啦&#xff0c;将这些日志存储在文本文件中&#xff0c;可行。

下面&#xff0c;我们来对程序进行设置&#xff1a;

1、设置网络设备&#xff1a;

DevList &#61; [

[5,&#39;LWCO-N6/7-U41-SW-6800-POC&#39;],

[3,&#39;HZXY-38-A05-SLB-1&#39;],

[3,&#39;HZYX-38-A05-LLB-1&#39;],

[3,&#39;HZLW-N01-5208-LLB-1&#39;],

[3,&#39;HZLW-N01-5208-SLB-1&#39;]

]

[5,&#39;LWCO-N6/7-U41-SW-6800-POC&#39;]

其中5表示序列号是&#xff0c;&#39;LWCO-N6/7-U41-SW-6800-POC&#39;表示的是这台主机的hostname&#xff0c;也能够决定保存文件的文件名。

5的由来&#xff0c;来到交换机&#xff0c;我们来dis logb

选取一条syslog信息&#xff0c;贴出来。

%Jul 1 22:31:33:644 2011 LWCO-N6/7-U41-SW-6800-POC SHELL/5/SHELL_LOGOUT: admin logged out from 10.5.0.208.

然后我们来排个序&#xff1a;

0 %Jul

1

2 1

3 22:31:33:644

4 2011

5 LWCO-N6/7-U41-SW-6800-POC

6 SHELL/5/SHELL_LOGOUT:

7 ........

够了&#xff0c;够了

以上看出这里之所以是5&#xff0c;是因为将日志信息按照空格分割排序后&#xff0c;hostname的序号刚好就是5。这样理解简单。

hostname就是hostname&#xff0c;直接从syslog粘上去即可。

主机自己复制粘贴上去就行啦&#xff0c;重复配置就不演示了。

运行一段时间后&#xff0c;观察我们创建的D:\SyslogData文件夹&#xff1a;

下面多了一个以时间命名的文件夹&#xff0c;继续点进去

这些&#xff0c;就是我们不同主机发过来的日志文件&#xff0c;以文本文件形式打开&#xff0c;会发现&#xff0c;日志呢&#xff0c;都在这里了。

如果需要修改文件保存路径&#xff0c;请修改这一段中的D:\SyslogData&#xff0c;但在文件保存之前&#xff0c;修改的目录一定要是存在的。

好了&#xff0c;今天就到这里。

后续&#xff1a;

12月份了&#xff0c;发现程序并没有自动创建文件夹及文件&#xff0c;并将日志写到新文件中。

发现负载均衡日志信息中12月比11月多了一个空字符&#xff0c;导致列表匹配异常&#xff0c;无法正常使用&#xff0c;&#xff0c;当然并不是所有设备都这样&#xff0c;为此对代码进行了优化。

11月收到日志格式如下&#xff1a;

<133>Nov 19 00:00:44 HZLW-N01-5208-SLB-1 NOTICE AlteonOS : real service vm-lw-gaea-dealer-manage...r-t01, IP 10.213.7.36:8080 operational, affected virt 10.210.49.90

12月收到日志格式(列表)如下&#xff1a;

[&#39;<189>Dec&#39;, ‘’&#xff0c; &#39;5&#39;, &#39;11:10:54&#39;, &#39;HZLW-N02-5208-SLB-2&#39;, &#39;NOTICE&#39;, &#39;AlteonOS&#39;, &#39;:&#39;, &#39;admin(admin)&#39;, &#39;login&#39;, &#39;from&#39;, &#39;host&#39;, &#39;10.194.86.154&#39;, &#39;via&#39;, &#39;WBM&#39;]

优化方法&#xff1a;将列表中的&#39;&#39;删除&#xff0c;重新组合。

Asctime_ &#61; time.asctime().split(&#39; &#39;)

Asctime &#61; []

for i in Asctime_:

if i !&#61; &#39;&#39;:

Asctime.append(i)

LogMsgList_ &#61; LogMsg.split(&#39; &#39;)

LogMsgList &#61; []

for i in LogMsgList_:

if i !&#61; &#39;&#39;:

LogMsgList.append(i)



推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
author-avatar
忽而今秋_丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有