Skip to main content

🐧 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 Downloads
⭐ 项目评分 PyPI Version
🗃️ 包格式 PyPI Format
🚀 项目状态 PyPI Status
🔗 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许可证 开源协议,您可以自由使用、修改和分发。

📞 联系方式


如果这个项目对您有帮助,请给我们一个星标!

Made with ❤️ by 坐公交也用券

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plbm_liumou_stable-1.4.9.tar.gz (72.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plbm_liumou_stable-1.4.9-py3-none-any.whl (83.4 kB view details)

Uploaded Python 3

File details

Details for the file plbm_liumou_stable-1.4.9.tar.gz.

File metadata

  • Download URL: plbm_liumou_stable-1.4.9.tar.gz
  • Upload date:
  • Size: 72.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for plbm_liumou_stable-1.4.9.tar.gz
Algorithm Hash digest
SHA256 5c5357c30cdc2eac03677ae891d90619e5e69cce1a634cee364d5d8fd9befc7c
MD5 1035f12ac17b263407253814ad66f521
BLAKE2b-256 c3a5598e80f95f4693887510346bf6d8bc06c221ee22f54d44f8510d6ddf224a

See more details on using hashes here.

File details

Details for the file plbm_liumou_stable-1.4.9-py3-none-any.whl.

File metadata

File hashes

Hashes for plbm_liumou_stable-1.4.9-py3-none-any.whl
Algorithm Hash digest
SHA256 7f865b5f3ac62f1f99c1e9f56b6b1da2cb41efc578e8fb1be88f6c1ccfae5896
MD5 475f4313aac3eb72171544bbb83b6f4f
BLAKE2b-256 cfff5ce1a3ae456360162235cdd4debc6f87a0c025e57700e57f58d168784dba

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.4.9 This release

2 files

1.4.8

2 files

1.4.6

2 files

1.4.5

2 files

1.4.4

2 files

1.4.3

2 files

1.4.2

2 files

1.4.1

2 files

1.4.0

2 files

1.3.10

2 files

1.3.9

2 files

1.3.8

2 files

1.3.7

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page