【Syslog】用Python搭建一个Syslog服务器

这篇具有很好参考价值的文章主要介绍了【Syslog】用Python搭建一个Syslog服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一.背景

二.作用

三.源代码

1.主程序

syslogtool.py

2.小工具

full.py

cpu_data.py

EICAR.COM

3.运行效果

四.使用说明

五.linux上用yum装rsyslog各种问题


一.背景

        最近测试的实习工作中,需要在本机搭一个Syslog服务器来接收控制中心(第三方平台)的日志,涉及到这方面知识盲区了,嗨嗨嗨。网上查阅资料,参考性最好的是这个使用python接收和发送syslog | 码农家园,此外还在centos 8的虚拟机上尝试用yum装了个rsyslog,过程中遇到了不少问题哈哈,好在都一一解决了。

  • 环境:Python3.6.8,Win7
  • 用到的库:datetime,argparse,logging,socketserver,pysyslogclient,psutil

二.作用

  • 可同时用于syslogsever和syslogclient的脚本
  • 请用于系统日志接收测试和传输测试
  • 作为系统日志服务器运行时,收到的系统日志将显示在屏幕上,并同时保存在syslog.log文件中

三.源代码

        服务器端的处理原作者参考的参考如下

  •  https://qiita.com/ranmatsu/items/f76fcc607869aeab35e3
  •  https://gist.github.com/marcelom/4218010

1.主程序

syslogtool.py

from datetime import datetime, timezone, timedelta
import argparse
import logging
import socketserver
import pysyslogclient
#pip install pysyslogclient

#命令行参数
PARSER = argparse.ArgumentParser()
PARSER.add_argument("-mode", "--mode", default="CLI", help="action mode:CLI(default) or SERVER")
PARSER.add_argument("-i", "--ip", default="127.0.0.1", help="IP or hostname(default localhost)")
PARSER.add_argument("-p", "--port", default="514", help="port number(default 514)")
PARSER.add_argument("-pr", "--protocol", default="UDP", help="TCP or UDP(default)")
PARSER.add_argument("-c", "--count", default="1", help="send count(default 1)")
PARSER.add_argument("-m", "--message", default="syslog message!!", help="syslog message")

class SyslogUDPHandler(socketserver.BaseRequestHandler):
    """
    SyslogUDPHandler
    """
    LOG_FILE = 'syslog.log'
    logging.basicConfig(level=logging.INFO, format='%(message)s',
                        datefmt='', filename=LOG_FILE, filemode='a')

    def handle(self):
        data = bytes.decode(self.request[0].strip())

        datalist = str(data).split(" ")
        datalist[1] = applytimezonejst(datalist[1])
        message = " ".join(datalist)

        socket = self.request[1]
        print(f"{self.client_address[0]}: {message}")
        logging.info(message)
        
#接受一个名为utcdate的参数。
def applytimezonejst(utcdate):
    #使用datetime.strptime方法将输入的utcdate按照给定的格式解析为一个datetime对象,并将其赋值给_dt。
    _dt = datetime.strptime(utcdate, "%Y-%m-%d")
    #对刚刚创建的_dt对象进行处理,首先使用replace方法将时区信息设置为UTC时间
    _dt2 = _dt.replace(tzinfo=timezone.utc).astimezone(timezone(timedelta(hours=8))).strftime("%Y/%m/%d %Z %z")
    #返回转换后的日期时间字符串_dt2。
    return _dt2


def syslogserver(host, port):
    """
    syslogserver
    """
    try:
        server = socketserver.UDPServer((host, int(port)), SyslogUDPHandler)
        print(f"start syslog server ({host}:{port})")
        server.serve_forever(poll_interval=0.5)

    except KeyboardInterrupt:
        print("Crtl+C Pressed. Shutting down.")

def syslogclient(host, port, prot, count, message):
    """
    syslogclient
    """

    client = pysyslogclient.SyslogClientRFC5424(host, port, proto=prot)

    for i in range(int(count)):
        client.log(message)
        print(f"sendcount:{str(i+1)}")

def main():
    """
    main
    """
    optargs = PARSER.parse_args()
    mode = optargs.mode
    host = optargs.ip
    port = optargs.port
    prot = optargs.protocol
    count = optargs.count
    message = optargs.message

    if mode == "CLI":
        syslogclient(host, port, prot, count, message)
    else:
        syslogserver(host, port)

if __name__ == '__main__':
    main()

2.小工具

full.py

import threading, multiprocessing
 
def loop():
    x = 0
    while True:
        x = x ^ 1
 
for i in range(multiprocessing.cpu_count()):
    t = threading.Thread(target=loop)
 
t.start()

cpu_data.py

import psutil

# 查看CPU信息
cpu_info = psutil.cpu_percent(interval=1, percpu=True)
print("CPU使用率:", cpu_info)

# 查看内存信息
mem_info = psutil.virtual_memory()
print("内存总量:", mem_info.total)
print("内存使用量:", mem_info.used)
print("内存空闲量:", mem_info.available)

EICAR.COM

新建txt文件,然后把下面内容放进去,文件名改成EICAR.COM,文件类型保存为所有文件,ps:用来检测杀毒软件是否有效的一个小方法,不是真的病毒哦~

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

3.运行效果

        在命令行进入到文件相应目录然后执行syslogtools.py,生成的.log文件效果如图,由于平台还在测试阶段,所以有内容就行,具体是什么不用太在意

python接收syslog日志,服务器,运维,测试工具

四.使用说明

由于demo过程中遇到了些小问题,在此写了个说明附上~

1.供测试使用full.py是让cpu大致跑到50%

2.日志的程序在log-syslogtool.py

        2.1 生成的日志在syslogtool.py程序的同级目录下syslog.log

        2.2 记得修改成本地IPv4地址(在命令行cmd用ipconfig查看),端口号自定义,一般用514

        2.3 记得下载需要的库 pip install pysyslogclient还有pip install psutil等等

3.disk-cpu_data.exe是查看cpu和内存的使用情况,代码简单,打包试验了一下

4.两种模式

        4.1 启动服务器

python syslogtool.py --mode SERVER -i <IP地址> -p <端口号>

        4.2 客户端模式

python syslogtool.py -i <IP地址> -pr <UDP or TCP> -p <端口号> -m <syslog 消息> -c <传输计数>

         4.3 帮助

python syslogtool.py -h
usage: syslogtool.py [-h] [-mode MODE] [-i IP] [-p PORT] [-pr PROTOCOL]
                     [-c COUNT] [-m MESSAGE]

optional arguments:
  -h, --help            show this help message and exit
  -mode MODE, --mode MODE
                        action mode:CLI(default) or SERVER
  -i IP, --ip IP        IP or hostname(default localhost)
  -p PORT, --port PORT  port number(default 514)
  -pr PROTOCOL, --protocol PROTOCOL
                        TCP or UDP(default)
  -c COUNT, --count COUNT
                        send count(default 1)
  -m MESSAGE, --message MESSAGE
                        syslog message

5.手打的朋友注意缩进,为了方便在虚拟机上只装了Python的IDEL和pip,然后空格和tab出现了问题检查不出来,要ctrl+c/v上一行再加tab才ok

五.linux上用yum装rsyslog各种问题

  • centos 8 停止维护,用yum或者dnf安装包的时候发现会报错:
    Error: Failed to download metadata for repo 'AppStream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

    根本原因:CentOS Linux 8 官方宣布于2021.12.31开始停止维护,延期到2022.1.31执行完毕。老的镜像将移到vault.centos.org。所以,以上报错是由于CentOS 8 EOS 将CentOS 8 Mirror 站点转换为Vault 并且找不到Mirror 站点而出现的问题。

  • 解决方法:更换镜源

  • 推荐阿里云的,这篇文章过程讲的很清楚CentOS 8 安装国内、本地YUM源_centos8国内安装源-CSDN博客

Error: GPG check FAILED

清缓存,再来一遍

最后日志是在一个message文件里,注意是文件!文件!文件!重要的事情说三遍这不是个文件夹,用cd 是不行滴,tail进去就可以看啦文章来源地址https://www.toymoban.com/news/detail-850114.html

到了这里,关于【Syslog】用Python搭建一个Syslog服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kiwi syslog日志服务器怎么在Windows下搭建,这篇文章好好捋捋,附相关软件下载!

    在昨天的推文中,有朋友留言想要看看kiwi syslog的文章,并且是win系统下,今天安排一下: 下载地址: 1、 下载kiwi_syslog_server,解压后,运行Kiwi_Syslog_Server_9.5.0.setup.exe ,点 I Agree ; 2、默认选项,然后点Next继续 3、默认选项,点击Next 4、(这里的意思好像是 安装网页的日志

    2024年02月05日
    浏览(44)
  • 极简-windows电脑端接收手机验证码(python简易服务器处理get请求)

    背景:需要电脑端接收短信来实现一部分自动登录功能 实现步骤:1.手机app获取短信 2.内网穿透转发电脑 3.python处理get请求 1手机app获取短信 2内网穿透转发电脑 3python处理get请求

    2024年01月20日
    浏览(39)
  • Python-Python高阶技巧:HTTP协议、静态Web服务器程序开发、循环接收客户端的连接请求

    当前版本号[20231114]。 版本 修改说明 20231114 初版 1.1 网址的概念 网址又称为URL,URL的英文全拼是(Uniform Resoure Locator),表达的意思是 统一资源定位符 ,通俗理解就是网络资源地址。 URL地址:https://www.itcast.com/18/1122/10/E178J2O4000189FH.html 1.2 URL的组成 域名 : IP地址的别名 ,它是用

    2024年02月04日
    浏览(64)
  • python搭建HTTP服务器

    项目经常需要HTTP对接,模拟HTTP client请求可以使用postman测试,模拟HTTP server回复该如何处理?本文介绍通过python搭建HTTP服务器的过程。 先装python,然后装PyCharm。 python安装、下载说明,看这部分 https://www.runoob.com/python3/python3-install.html PyCharm安装、下载说明,看这部分 PyCharm

    2024年02月05日
    浏览(42)
  • 使用Python搭建代理服务器- 爬虫代理服务器详细指南

    搭建一个Python爬虫代理服务器可以让你更方便地管理和使用代理IP。下面是一个详细的教程来帮助你搭建一个简单的Python爬虫代理服务器: 1. 首先,确保你已经安装了Python。你可以在官方网站(https://www.python.org/)下载并安装最新版本的Python。 2. 安装所需的Python库。打开终端或

    2024年02月15日
    浏览(40)
  • Python实现搭建-简单服务器教程

    Python动态服务器网页(需要使用WSGI接口),基本实现步骤如下: 1.等待客户端的链接,服务器会收到一个http协议的请求数据报 2.利用正则表达式对这个请求数据报进行解析(请求方式、提取出文件的环境) 3.提取出文件的环境之后,利用截断取片的方法将文件名转化为模块

    2023年04月18日
    浏览(37)
  • 解决syslog服务器启动问题

    Syslog 监控和管理对于每个组织来说都很重要,可以减少系统停机时间、提高网络性能并加强企业的安全策略。而在网络系统管理中,syslog服务用于收集、存储和管理系统和设备的日志信息。 然而,有时候我们可能会遇到syslog服务器无法启动的问题,这会给网络管理和故障排

    2024年04月25日
    浏览(32)
  • 使用Python搭建本地文件传输服务器

    使用Python搭建本地文件传输服务器 在日常生活中,我们经常会有需要将大文件或者多个文件传输给他人的情况。这时候,可以使用Python搭建本地文件传输服务器来进行高效、安全的文件传输。 步骤如下: 安装必要的Python模块 使用Python的socket模块进行网络通信,同时需要使用

    2024年02月09日
    浏览(43)
  • Python实现轻量级WEB服务器接收HTTP提交的RFID刷卡信息并回应驱动读卡器显示播报语音

     本示例使用的设备:RFID网络WIFI无线TCP/UDP/HTTP可编程二次开发读卡器POE供电语音-淘宝网 (taobao.com)

    2024年02月12日
    浏览(48)
  • 基于 Python 实现一个简单的 HTTP 服务器

    文章这个题目,让我想起了大学时上《Unix 网络编程》这门专业课的家庭作业,题目几乎一模一样。 HTTP 服务器工作在服务端,主要功能包括处理来自客户端的请求,管理网络资源,以及生成和发送响应给客户端。在实际应用中,HTTP 服务器不仅限于传输 HTML 文档;它还可以传

    2024年03月22日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包