1069 字
5 分钟
Linux运维工具箱(Python)

项目背景#

在学习Linux运维相关知识时,发现日常管理服务器时总是要重复执行很多命令,比如配置网络、安装软件、检查系统状态等。于是就想着能不能写个工具把这些操作自动化,这样以后配置新服务器就方便多了。

最开始是用Shell写的,但是Shell处理复杂逻辑不太方便,后来学了Python就想着用Python重写。花了大概两周时间,边学边写,写出了这个运维工具箱。

主要功能#

这个工具箱主要实现了以下功能:

1. 系统信息管理#

  • 自动识别Linux发行版(支持Ubuntu、CentOS、Rocky Linux等)
  • 检查系统版本和配置信息
  • 查看系统资源使用情况

2. 网络配置#

  • 自动配置静态IP地址
  • 管理DNS服务器设置
  • 支持不同发行版的网络配置方式(Debian系用的是netplan,RedHat系用的是network-scripts)

3. 软件源管理#

  • 一键更换国内镜像源(清华源、阿里源等)
  • 自动备份原有配置
  • 根据系统版本选择合适的源地址

4. 服务安装与部署#

  • 自动安装常用软件(Nginx、Docker等)
  • 一键部署开发环境
  • 配置系统服务自启动

5. 交互式菜单#

使用了简单的菜单系统,操作起来比较直观:

====================================
Linux 运维工具箱 v1.0
====================================
1. 系统初始化
2. 软件安装管理
3. 系统配置
4. 系统巡检
5. 退出
====================================

技术实现#

代码结构#

整个工具分成了几个模块:

  • 基础工具函数:负责执行命令、检查系统等底层操作
  • 系统信息模块:读取和解析系统配置
  • 网络配置模块:处理各种网络相关的配置
  • 服务管理模块:安装和配置各类服务
  • 交互界面模块:提供用户交互菜单

关键技术点#

1. 系统识别#

通过读取/etc/os-release文件来识别系统信息:

def read_system_info():
os_release_data = {}
with open('/etc/os-release') as file:
for line in file:
if '=' in line:
key, value = line.strip().split('=', 1)
os_release_data[key] = value.strip().strip('"')
return os_release_data

2. 命令执行#

使用subprocess模块执行系统命令,并处理各种异常情况:

def run_system_command(command_list):
try:
subprocess.run(command_list, check=True)
return True
except FileNotFoundError:
print(f"找不到命令:{command_list[0]}")
return False
except subprocess.CalledProcessError:
print("命令执行失败")
return False

3. 跨发行版兼容#

不同Linux发行版使用的包管理器不同,需要做适配:

  • Debian系(Ubuntu):使用apt
  • RedHat系(CentOS、Rocky):使用yumdnf

代码里写了自动检测系统类型,然后调用对应的包管理器。

使用方式#

快速开始#

Terminal window
# 下载工具包
wget https://devnu11.pages.dev/file/tools.tar
# 解压
tar xf tools.tar
# 赋予执行权限
chmod +x check_system.sh ops_toolbox.py wechat.py
# 运行(需要root权限)
python3 ops_toolbox.py

使用建议#

  • 建议在虚拟机或测试环境先试用一下
  • 某些操作会修改系统配置,使用前最好备份重要数据
  • 目前主要测试了CentOS 7/Rocky 9和Ubuntu 22.04

开发过程中的收获#

遇到的问题#

  1. 不同发行版差异大:刚开始没想到不同Linux发行版的配置文件位置、命令都不一样,花了不少时间去适配。
  2. 网络配置复杂:特别是Ubuntu 18.04之后用netplan,配置方式完全不同,研究了好久。
  3. 错误处理:一开始错误处理做得不好,运行中出错就直接崩溃,后来加了很多异常捕获和提示。

学到的东西#

  • 熟悉了Python的subprocess模块,学会了用Python调用系统命令
  • 深入了解了Linux系统的配置文件结构和服务管理
  • 学会了如何写可维护性更好的代码,比如模块化、加注释
  • 明白了做跨平台兼容的重要性

后续计划#

这个工具现在还比较简陋,很多地方可以改进:

  • 添加更多Linux发行版的支持(Arch、openSUSE等)
  • 增加日志记录功能
  • 做一个Web界面,这样操作更方便
  • 添加配置文件,让用户可以自定义配置
  • 写详细的使用文档

项目地址#

工具包下载:tools.tar

代码写得比较仓促,可能还有不少bug,如果你发现问题欢迎反馈!

Linux运维工具箱(Python)
https://dev-null-sec.github.io/posts/python运维工具箱/
作者
DevNull
发布于
2025-09-11
许可协议
CC BY-NC-SA 4.0