简介
在 Linux 自动化中,Bash 非常适合串联命令行工具。不过,随着逻辑变得更加复杂,Python 通常是更好的选择,因为它具有更清晰的结构、更强的数据处理能力以及丰富的标准库。
因此,许多运维团队会同时使用两者:使用 Bash 完成简短的 Shell 原生任务,使用 Python 编写更易维护的自动化脚本。
在本实验中,你将开始学习如何在 Linux 环境中使用 Python。你将学习检查 Python 版本、使用交互式 Shell 进行快速测试,并编写一个行为类似原生 Linux 命令的 Python 脚本。
检查 Python 版本
编写代码前,必须先确认系统中安装的 Python 解释器版本。包括你正在使用的 Ubuntu 系统在内,大多数现代 Linux 发行版都预装了 Python 3。
对于运维工作来说,检查版本也是为了确认兼容性。不同的 Python 版本可能会增加或移除语言特性,并改变库的行为。如果默认认为所有机器上的解释器都完全相同,同一个脚本可能在一台机器上正常运行,却在另一台机器上失败。
在此步骤中,你将确认系统中已安装的 Python 3 版本。这可以确保环境已经准备好运行后续编写的脚本。
打开终端,运行以下命令检查版本:
python3 --version
你应该会看到类似下面的输出:
Python 3.10.12
具体版本号可能略有不同,但只要是 Python 3.x,就可以继续。这里明确使用 python3,是因为在某些旧版系统中,不带 3 的 python 可能指向较旧且已弃用的 Python 2,也可能根本没有建立链接。
使用 REPL
Python 提供了一个交互式 Shell,通常称为 REPL(读取 - 求值 - 输出循环,Read-Eval-Print Loop)。它是测试代码片段、检查库是否可用或执行快速计算的强大工具,无需先创建文件。
REPL 很有用,因为它可以缩短反馈周期。你不必反复编辑文件、保存文件并运行文件,而是可以一次测试一个表达式。许多工程师会像使用 Shell 命令行提示符一样使用 REPL:先在其中进行尝试,再将想法写成正式脚本。
在此步骤中,你将进入 Python 交互式 Shell,运行一个简单命令,然后退出并返回 Bash Shell。
首先,输入以下命令启动 Python 3 交互式 Shell:
python3
命令行提示符会变为 >>>,这表示你已进入 Python 环境。
现在,输入一个简单的 Python 命令来输出消息:
print("Hello from Python REPL")
你会立即看到输出。
要退出 Python Shell 并返回标准 Linux Bash Shell,输入:
exit()
你也可以按下 Ctrl + D。
退出后,你应该会再次看到标准命令行提示符,例如 labex:~/project $。
创建脚本
REPL 非常适合测试,但真正的自动化需要将代码保存到脚本中。Python 脚本本质上就是一个包含 Python 代码的文本文件。
与一次性命令相比,脚本的实际优势在于可重复执行。将逻辑保存到文件后,你可以检查代码、使用 Git 进行版本管理、第二天再次运行,也可以直接交给其他工程师,而不必重新输入任何内容。
在此步骤中,你将创建名为 system_info.py 的文件。
使用 nano 文本编辑器创建并打开该文件:
nano system_info.py
将以下内容添加到文件中:
print("Starting system info script...")
保存并退出 nano:
要在 nano 编辑器中保存更改,按下 Ctrl + O,然后按 Enter 确认文件名。最后,按下 Ctrl + X 退出编辑器并返回终端。
现在,确认文件已经创建:
ls -l system_info.py
使用标准库
Python 的一大优势是其「自带电池」式的标准库。使用 Bash 时,你经常需要解析 uname 或 cat /etc/os-release 等命令的输出;而 Python 提供了内置模块,可以更清晰地访问系统信息。
这是 Python 常用于运维工具开发的主要原因之一。你不必拼接许多小型文本处理命令,而是可以直接使用结构化的函数和对象。这样通常能让脚本更易读,并且在输出格式发生变化时更加稳健。
在此步骤中,你将修改脚本,使用 platform 库输出操作系统的详细信息。
再次使用 nano 打开脚本:
nano system_info.py
将文件内容修改为:
import platform
print("Starting system info script...")
print(f"System: {platform.system()}")
print(f"Release: {platform.release()}")
print(f"Version: {platform.version()}")
保存并退出 nano(Ctrl+O、Enter、Ctrl+X)。
你可以将脚本明确传递给 Python 解释器来测试:
python3 system_info.py
你应该会看到描述 Linux 环境的输出。
执行脚本
在前面的步骤中,你使用 python3 system_info.py 运行了脚本。
明确调用解释器是最适合初学者的方式,因为它可以避免歧义。Shell 不需要猜测如何运行该文件,你也能清楚看到哪个解释器正在执行代码。
在标准 Linux 使用场景中,你有时会看到脚本以 ./system_info.py 的形式直接执行。这需要满足两个条件:
- 文件中包含「shebang」行(本实验跳过了这一行)。
- 文件具有「执行」权限。
由于本实验使用的是不包含 shebang 的简化环境,我们将采用最可靠的方法:明确使用 Python 解释器运行脚本。
再次运行脚本,确认它仍然可以正常工作:
python3 system_info.py
这条明确的命令会告诉 Linux 要执行的具体操作:「使用 python3 程序读取并执行 system_info.py 文件中的指令。」
总结
在本实验中,你已经成功建立了 Bash 与 Python 之间的联系。你学习了如何:
- 检查 Python 版本,确保环境兼容。
- 使用 REPL 进行交互式测试。
- 创建 Python 脚本。
- 使用标准
platform库访问系统数据。 - 使用
python3命令运行脚本。
这些技能构成了 Linux 中 Python 脚本编程的基础,让你能够编写通常比单独使用 Bash 更复杂、更易读的自动化工具。



