🐧 PythonLinuxBasicModule (PLBM)
📋 简介
PythonLinuxBasicModule(简称 plbm)是一个功能强大的Python3 Linux系统管理工具库,专为简化Linux系统管理任务而设计。
在日常工作中,我们经常需要编写大量重复的Linux管理脚本。为了提高开发效率,我将常用的Linux管理功能封装成模块,并以开源方式共享,希望能够帮助更多开发者,同时也欢迎社区贡献。
🎯 核心功能
- 📦 软件包管理 - 支持APT、YUM、DPKG等主流包管理器
- 🔧 服务管理 - SystemD服务启停、状态监控、开机自启管理
- 📁 文件管理 - 文件操作、MD5校验、目录管理、压缩解压
- 🌐 网络管理 - 网络状态监控、IP规则配置、网卡管理
- 🔒 安全管理 - 权限验证、防火墙配置、iptables规则管理
- 💻 系统信息 - 操作系统信息、硬件信息、进程管理
- 🐳 Docker支持 - 容器生命周期管理
- 📊 日志系统 - 彩色日志输出、文件日志记录
✨ 特色亮点
- 📝 全中文注释 - 代码注释完整,新手也能轻松理解
- 🔧 零依赖设计 - 主要使用Python内置模块,即装即用
- 🔄 语法兼容 - 支持Python 3.0+,兼容新旧版本语法
- 🆓 完全开源 - MIT协议,永久免费使用
- 🛡️ 类型安全 - 完整的类型提示和参数验证
- 🎨 友好日志 - 彩色日志输出,开发调试更轻松
📊 PyPI 统计数据
| 📈 统计项 | 🎯 数据 |
|---|---|
| 📦 PyPI包名 | plbm-liumou-Stable |
| 🏷️ 最新版本 | 1.4.8 |
| 📅 发布时间 | 2024年 |
| 📥 月下载量 | |
| ⭐ 项目评分 | |
| 🗃️ 包格式 | |
| 🚀 项目状态 | |
| 🔗 PyPI链接 | https://pypi.org/project/plbm-liumou-Stable/ |
🚀 使用方法
📦 安装方式
🎯 方式一:PyPI安装(推荐)
访问PyPI项目地址:https://pypi.org/project/plbm-liumou-Stable/
# 使用清华源加速安装
pip3 install --upgrade plbm_liumou_Stable ColorInfo -i https://pypi.tuna.tsinghua.edu.cn/simple
# 或使用官方源
pip3 install --upgrade plbm_liumou_Stable ColorInfo
🎯 方式二:源码安装
适合需要自定义修改或参与开发的场景:
# 克隆项目
git clone https://gitee.com/liumou_site/PythonLinuxBasicModule.git
# 进入项目目录
cd PythonLinuxBasicModule
# 执行安装脚本
python3 install.py
⚙️ 系统要求
- 🐧 操作系统: Linux (Ubuntu, CentOS, Debian等)
- 🐍 Python版本: 3.0 及以上
- 🔑 权限要求: 部分功能需要sudo权限
- 📦 依赖包: ColorInfo, psutil, loguru, py7zr
💻 代码示例
📦 包管理示例
🔍 点击查看包管理代码
📋 示例代码
# -*- encoding: utf-8 -*-
"""
@File : package_demo.py
@Time : 2022-10-24 22:45
@Author : 坐公交也用券
@Version : 1.0
@Contact : faith01238@hotmail.com
@Homepage : https://liumou.site
@Desc : 软件包管理示例
"""
from plbm_liumou_Stable import NewPackageManagement
from ColorInfo import ColorLogger
class PackageManager:
def __init__(self, package_name, password):
"""初始化包管理器"""
self.package_name = package_name
self.package_mgr = NewPackageManagement(password=password, package=package_name)
self.logger = ColorLogger(class_name=self.__class__.__name__)
def check_and_remove(self):
"""检查并卸载软件包"""
if self.package_mgr.installed():
self.logger.info(f"📦 检测到已安装: {self.package_name}")
if self.package_mgr.uninstall():
self.logger.success(f"✅ 卸载成功: {self.package_name}")
return True
else:
self.logger.error(f"❌ 卸载失败: {self.package_name}")
return False
else:
self.logger.warning(f"⚠️ 未安装: {self.package_name}")
return True
def install_package(self, update_index=False):
"""安装软件包"""
if not self.package_mgr.installed():
self.logger.info(f"📥 开始安装: {self.package_name}")
if self.package_mgr.install(package=self.package_name, update=update_index):
self.logger.success(f"✅ 安装成功: {self.package_name}")
return True
else:
self.logger.error(f"❌ 安装失败: {self.package_name}")
return False
else:
self.logger.info(f"📦 软件包已存在: {self.package_name}")
return True
if __name__ == "__main__":
# 示例:管理vsftpd服务
manager = PackageManager(package_name="vsftpd", password="your_password")
# 卸载软件包
manager.check_and_remove()
# 安装软件包(带更新索引)
# manager.install_package(update_index=True)
🖥️ 运行结果
$ python3 package_demo.py
2023-01-06 22:42:31 [PackageManager] INFO: 📦 检测到已安装: vsftpd
2023-01-06 22:42:31 [PackageManager] INFO: 🔄 开始卸载进程...
2023-01-06 22:42:36 [PackageManager] SUCCESS: ✅ 卸载成功: vsftpd
🔧 服务管理示例
🔍 点击查看服务管理代码
📋 示例代码
# -*- encoding: utf-8 -*-
"""
@File : service_demo.py
@Time : 2022-10-24 22:45
@Author : 坐公交也用券
@Version : 1.0
@Contact : faith01238@hotmail.com
@Homepage : https://liumou.site
@Desc : 服务管理示例
"""
from plbm_liumou_Stable import NewServiceManagement
from ColorInfo import ColorLogger
class ServiceManager:
def __init__(self, service_name, password):
"""初始化服务管理器"""
self.service_name = service_name
self.service_mgr = NewServiceManagement(service=service_name, password=password)
self.logger = ColorLogger(class_name=self.__class__.__name__)
def restart_service(self, reload_config=True):
"""重启服务(支持配置重载)"""
self.logger.info(f"🔄 正在重启服务: {self.service_name}")
if self.service_mgr.restart(reload=reload_config):
self.logger.success(f"✅ 服务重启成功: {self.service_name}")
return True
else:
self.logger.error(f"❌ 服务重启失败: {self.service_name}")
return False
def manage_service(self, action="status"):
"""服务管理(启动/停止/状态检查)"""
actions = {
"start": self.service_mgr.start,
"stop": self.service_mgr.stop,
"restart": self.service_mgr.restart,
"enable": self.service_mgr.enable,
"disable": self.service_mgr.disable
}
if action in actions:
self.logger.info(f"🔄 执行操作: {action} {self.service_name}")
result = actions[action]()
if result:
self.logger.success(f"✅ 操作成功: {action} {self.service_name}")
else:
self.logger.error(f"❌ 操作失败: {action} {self.service_name}")
return result
else:
self.logger.warning(f"⚠️ 不支持的操作: {action}")
return False
if __name__ == "__main__":
# 示例:管理vsftpd服务
manager = ServiceManager(service_name="vsftpd", password="your_password")
# 重启服务(带配置重载)
manager.restart_service(reload_config=True)
# 其他操作
# manager.manage_service("start") # 启动服务
# manager.manage_service("stop") # 停止服务
# manager.manage_service("enable") # 设置开机自启
🖥️ 运行结果
$ python3 service_demo.py
2023-01-06 22:36:41 [ServiceManager] INFO: 🔄 正在重启服务: vsftpd
2023-01-06 22:36:41 [ServiceManager] SUCCESS: ✅ 服务重启成功: vsftpd
📁 文件管理示例
🔍 点击查看文件管理代码
📋 示例代码
# -*- encoding: utf-8 -*-
"""
@File : file_demo.py
@Desc : 文件管理示例
"""
from plbm_liumou_Stable import NewFile
from ColorInfo import ColorLogger
class FileManager:
def __init__(self):
"""初始化文件管理器"""
self.logger = ColorLogger(class_name=self.__class__.__name__)
self.file_mgr = NewFile()
def manage_directory(self, path):
"""目录管理示例"""
self.logger.info(f"📁 管理目录: {path}")
# 创建目录
if self.file_mgr.mkdir_p(target=path, mode=0o755):
self.logger.success(f"✅ 目录创建成功: {path}")
else:
self.logger.error(f"❌ 目录创建失败: {path}")
return False
# 获取文件MD5(示例)
test_file = "/etc/hosts"
if self.file_mgr.get_md5(filename=test_file):
md5_value = self.file_mgr.md5
self.logger.info(f"🔍 文件 {test_file} 的MD5值: {md5_value}")
return True
def copy_files(self, src, dst):
"""文件复制示例"""
self.logger.info(f"📋 复制文件: {src} -> {dst}")
if self.file_mgr.copyfile(src=src, dst=dst, cover=True):
self.logger.success(f"✅ 文件复制成功")
return True
else:
self.logger.error(f"❌ 文件复制失败")
return False
if __name__ == "__main__":
manager = FileManager()
# 目录管理
manager.manage_directory("/tmp/test_dir")
# 文件复制
# manager.copy_files("/etc/hosts", "/tmp/hosts_backup")
🌐 网络管理示例
🔍 点击查看网络管理代码
📋 示例代码
# -*- encoding: utf-8 -*-
"""
@File : network_demo.py
@Desc : 网络管理示例
"""
from plbm_liumou_Stable import NewNetStatus, NewNetworkCardInfo
from ColorInfo import ColorLogger
class NetworkManager:
def __init__(self):
"""初始化网络管理器"""
self.logger = ColorLogger(class_name=self.__class__.__name__)
self.net_status = NewNetStatus()
self.net_card = NewNetworkCardInfo()
def check_network_status(self):
"""检查网络状态"""
self.logger.info("🌐 检查网络状态...")
# 检查网络连接
if self.net_status.ping(host="8.8.8.8"):
self.logger.success("✅ 网络连接正常")
else:
self.logger.warning("⚠️ 网络连接异常")
# 获取网卡信息
cards = self.net_card.get_cards()
self.logger.info(f"📊 检测到 {len(cards)} 个网卡")
for card in cards:
info = self.net_card.get_card_info(card)
if info:
self.logger.info(f"🔌 网卡 {card}: {info}")
def monitor_port(self, port):
"""监控端口状态"""
from plbm_liumou_Stable import NewListen
listener = NewListen()
if listener.port_is_listen(port=port):
self.logger.info(f"🔍 端口 {port} 正在监听")
else:
self.logger.info(f"🔍 端口 {port} 未监听")
if __name__ == "__main__":
manager = NetworkManager()
manager.check_network_status()
# manager.monitor_port(80) # 监控80端口
📚 API 参考
🔧 核心模块
| 模块 | 类名 | 功能描述 |
|---|---|---|
| Package | NewPackageManagement |
软件包管理(APT/YUM/DPKG) |
| Service | NewServiceManagement |
SystemD服务管理 |
| File | NewFile |
文件和目录管理 |
| NetStatus | NewNetStatus |
网络状态监控 |
| NetworkCardInfo | NewNetworkCardInfo |
网卡信息管理 |
| Process | NewProcess |
进程管理 |
| Docker | Docker |
Docker容器管理 |
| Iptables | IpTables |
防火墙规则管理 |
| Jurisdiction | Jurisdiction |
权限验证管理 |
📖 快速参考
# 软件包管理
from plbm_liumou_Stable import NewPackageManagement
pkg = NewPackageManagement(password="your_password", package="nginx")
pkg.install() # 安装
pkg.uninstall() # 卸载
pkg.installed() # 检查是否已安装
# 服务管理
from plbm_liumou_Stable import NewServiceManagement
svc = NewServiceManagement(service="nginx", password="your_password")
svc.start() # 启动
svc.stop() # 停止
svc.restart() # 重启
svc.enable() # 开机自启
# 文件管理
from plbm_liumou_Stable import NewFile
file_mgr = NewFile()
file_mgr.mkdir_p("/tmp/test") # 创建目录
file_mgr.get_md5("/etc/hosts") # 获取MD5
file_mgr.copyfile(src, dst) # 复制文件
🤝 贡献指南
我们欢迎所有形式的贡献!
- 🐛 报告Bug - 请在 Issues 中报告
- 💡 功能建议 - 欢迎提出新功能建议
- 🔧 代码贡献 - 欢迎提交Pull Request
- 📖 文档完善 - 帮助改进文档和示例
🛠️ 开发环境搭建
# 克隆项目
git clone https://gitee.com/liumou_site/plbm.git
cd plbm
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Linux
# 安装依赖
pip install -r requirements.txt
# 运行测试
python3 -m pytest tests/
📄 许可证
本项目采用 MIT许可证 开源协议,您可以自由使用、修改和分发。
📞 联系方式
- 📧 邮箱: liumou.site@qq.com
- 🏠 主页: https://liumou.site
- 🐙 Gitee: https://gitee.com/liumou_site/plbm
- 📦 PyPI: https://pypi.org/project/plbm-liumou-Stable/
⭐ 如果这个项目对您有帮助,请给我们一个星标! ⭐
Made with ❤️ by 坐公交也用券
Metadata
Release files for plbm-liumou-Stable 1.4.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plbm_liumou_stable-1.4.9.tar.gz | 72.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plbm_liumou_stable-1.4.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 156.1 kB
Release files / plbm_liumou_stable-1.4.9.tar.gz
| Download URL | plbm_liumou_stable-1.4.9.tar.gz |
|---|---|
| Size | 72.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5c5357c30cdc2eac03677ae891d90619e5e69cce1a634cee364d5d8fd9befc7c
|
|
BLAKE2b-256 checksum How to use checksums |
c3a5598e80f95f4693887510346bf6d8bc06c221ee22f54d44f8510d6ddf224a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Release files / plbm_liumou_stable-1.4.9-py3-none-any.whl
| Download URL | plbm_liumou_stable-1.4.9-py3-none-any.whl |
|---|---|
| Size | 83.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7f865b5f3ac62f1f99c1e9f56b6b1da2cb41efc578e8fb1be88f6c1ccfae5896
|
|
BLAKE2b-256 checksum How to use checksums |
cfff5ce1a3ae456360162235cdd4debc6f87a0c025e57700e57f58d168784dba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|