面向系统管理员的 Python – 基础知识

如果您曾经担任过系统管理员或计划成为系统管理员,那么您将了解编程知识

可以是一个强大的工具。 编程不仅可以帮助您节省工作时间,还可以帮助您了解其他程序的工作方式。 Python 是在 *nix 系统中广泛使用的语言之一,因此在许多情况下默认情况下随操作系统一起提供。

Python 通常被称为脚本语言,但 Python 更强大,虽然它是一种高级语言,但它可以执行最基本到复杂的任务。 在接下来的几周内,我将介绍一些可以使用 python 帮助您以管理员身份执行某些任务的方法。 请注意,虽然我不会涵盖最基本的内容,因为有很多网站比我能更好地解释它,而且更详细。 所以在大多数情况下,我会假设你有一些使用 Python 的经验。

如果您不确定从哪里开始,最好从一些简单的东西开始,例如教程点 (https://www.tutorialspoint.com/python),一旦你理解了一些基本的语句和语法,你就可以继续阅读标准库文档来理解一些常用的函数(https://docs.python.org/library). 此时您应该能够创建基本脚本。 最后,一旦您对基础知识和标准库感到满意,您就可以转向更高级的面向对象编程。

我将在这些教程中使用 Python 2.7 并在 Red Hat 系统上运行代码。 您可能想知道为什么我会使用 Python 2.7 而不是 3.2。 首先,您会发现在许多情况下,非标准模块对 Python 2.7 的支持比 3.2 更广泛。 其次,我将向您展示的大部分编程都将向后兼容 Python 3.2,但在大多数情况下,我对 Python 2.7 的使用更加流畅。

今天让我们从简单的事情开始,比如阅读日志文件。 每个管理员都应该跟踪他们的日志文件发生了什么,但是让我们面对它,我们很多人不时忘记它。 那么有什么比每次登录时都显示日志文件更好的方法来跟踪日志文件呢?

所以一开始我们会让 python 从 2 个不同的日志文件中读取最后 5 行。 然后,我们将内容分成两部分以使其更易于阅读,然后我们将从 ~/.bashrc 文件中运行代码,该文件将在我们登录时执行代码。 如果您经常使用 Unix 系统,您会知道 ~ 或波浪号代表登录用户的主目录。

这是我们的代码:

{codecitation}#!/usr/bin/python

log1 = open(‘/var/log/secure’).read()

log2 = open(‘/var/log/httpd/error_log’).read()

log1_lines = log1.split(‘n’)

log2_lines = log2.split(‘n’)

打印“—- SSH访问日志—-”

对于 log1_lines 中的行[-6:-1]:

打印线

打印 ” – Apache 错误日志——“

对于 log2_lines 中的行[-6:-1]:

打印行{/codecitation}

首先,我们告诉 python 打开并读取两个日志文件。 我选择了 SSH 访问日志和 Apache 错误日志,但您可以选择任何您喜欢的。 接下来,我们将日志文件拆分为一个列表,其中每个项目由一个换行符分隔。 然后我们简单地创建两个 for 语句来打印出 -5 和 -1 之间的分割线。

如果您不熟悉切片,基本上它只允许您在特定范围之间选择列表中的项目。 为了 example 0:4 之间的切片将显示前五个项目(因为 0 计为第一个项目),但是因为我们使用负数,这意味着我们在倒数第五和最后一个项目之间创建一个切片。

接下来,我们将代码作为 log.py 保存到 ~ 或主目录,并赋予它“chmod 755 log.py”权限,以便我们有权读取和执行该文件。

最后打开 ~/.bashrc 文件,在文件底部输入以下行

{codecitation}# 读取日志文件

./log.py

{/代码引用}

这就是它的全部内容,正如您在下面看到的那样,我们现在可以在每次登录时从我们的日志文件中看到最后 5 项。