网站首页 > 技术文章 正文
各位同学,大家好。采集日志数据是重要的数据来源。本次课程教大家使用Python技术从Windows和Linux两个环境去自动采集日志数据,轻松应对各类日志采集需求。
01 Python实时采集本地文件数据。
如果日志文件在本地,本地的操作系统是windows,可以这样来读取日志文件。
1. Subprocess
我们会使用Subprocess模块,Subprocess是Python内置的模块,这个模块中的Popen方法可以运行用户输入的命令行。如果运行正常,会把内容写入stdout管道。如果命令不正常,则把信息写入stderr管道。
Popen命令的基本格式是这样的:
shell=True 表示在终端中运行的命令,stdout=subprocess.PIPE 表示当命令运行正常的时候把结果写入stdout管道,stderr=subprocess.PIPE 表示的是当命令运行不正常的时候把结果写入stderr管道。
2.读取日志内容
我们使用以下的程序来实时读取日志内容:
其中的命令是powershell Get-Content –wait。
这是调用了Windows的powershell的Get-Content命令,来实时读取日志内容。
如果我们的操作系统是Linux,可以使用下面的程序来读取日志内容:
3.打印内容
读取到的结果通过以下程序来打印出来:
其中的readline是按照每行来读取内容,然后使用decode()将字节流转换成字符串,再使用strip方法,将内容中出现的/r和/n等字符删除。
最后使用communicate方法,将输出结果保存在内存中,而不是默认的保存到管道,这样存储能力更强,不容易卡死。这个进程将会一直执行直到外部程序来将它结束。
02 Python实时远程采集文件数据。
如果我们想远程采集linux服务器上面的日志信息,可以这样来操作。
1.创建ssh连接
Paramiko 是 Python 语言的一个 SSH 客户端。可以远程连接Linux服务器,通过 Python实现进行对远程服务器的操作。
创建SSH连接,我们使用以下程序来实现。
首先进行对paramiko下的SSHClient完成实例化。
然后使用set_missing_host_key_policy() 方法,连接到没有已知主机秘钥的服务器。最后使用connect()方法,输入远程连接的地址、端口号,用户名,密码等信息。
2.通过ssh获取日志信息
接下来,我们使用以下程序来读取服务器日志。
我们使用exec_command()方法来执行tail –f命令,获取服务器日志信息。
其中ssh_stdin为标准输入流,通常用于向进程发送输入。
ssh_stdout为标准输出流,通常用于输出进程的结果。
ssh_stderr为标准错误流,通常用于输出进程的错误信息。
然后使用readline方法按照每行来读取内容,再使用strip方法,将内容中出现的/r和/n等字符删除。
最后结束ssh连接。
03 实例讲解。
接下来,我们给大家进行实例的讲解。
未完待续。
我是源动君,带领大家一起进步,谢谢观看。
猜你喜欢
- 2025-01-21 [819]ScalersTalk成长会Python小组第10周学习训练日志
- 2025-01-21 使用Python操作Jenkins(创建,构建,获取Job日志和报告)
- 2025-01-21 「python小脚本」监听日志文件异常数据发送告警短信
- 2025-01-21 告别千篇一律,Python打印彩色日志的方法!
- 2025-01-21 用Python写一个MacOS的系统通知
- 2025-01-21 Python 自制日志装饰器
- 2025-01-21 Python如何在日志中隐藏明文密码
- 2025-01-21 Kubernetes日志采集ELK|收集Python项目日志并展示
- 2025-01-21 Python接口自动化核心模块 - 数据库操作和日志
- 2025-01-21 python模块之 loguru 日志模块
- 05-25Python 3.14 t-string 要来了,它与 f-string 有何不同?
- 05-25Python基础元素语法总结
- 05-25Python中的变量是什么东西?
- 05-25新手常见的python报错及解决方案
- 05-2511-Python变量
- 05-2510个每个人都是需要知道Python问题
- 05-25Python编程:轻松掌握函数定义、类型及其参数传递方式
- 05-25Python基础语法
- 257℃Python短文,Python中的嵌套条件语句(六)
- 257℃python笔记:for循环嵌套。end=""的作用,图形打印
- 256℃PythonNet:实现Python与.Net代码相互调用!
- 251℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 251℃Python实现字符串小写转大写并写入文件
- 106℃原来2025是完美的平方年,一起探索六种平方的算吧
- 91℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 81℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)