温馨提示×

CentOS Python自动化运维实践

小樊
56
2025-08-21 00:19:04
栏目: 编程语言

以下是CentOS下Python自动化运维的核心实践,涵盖工具使用与典型场景:

一、基础环境准备

  1. 安装Python与依赖库
    sudo yum install python3 python3-pip  # 安装Python 3及pip  
    pip3 install psutil paramiko smtplib  # 安装系统监控、SSH连接、邮件发送库  
    
  2. 配置虚拟环境(可选)
    python3 -m venv myenv  # 创建虚拟环境  
    source myenv/bin/activate  # 激活环境  
    

二、核心自动化场景

1. 系统监控与告警

  • 监控CPU/内存使用率
    import psutil  
    cpu = psutil.cpu_percent(interval=1)  
    memory = psutil.virtual_memory().percent  
    if cpu > 80 or memory > 80:  
        print("资源使用率过高!")  # 可扩展为邮件/短信告警  
    
  • 服务状态监控
    import psutil  
    def is_service_running(service_name):  
        return any(service_name in proc.info['name'] for proc in psutil.process_iter(['name']))  
    print(is_service_running("nginx"))  # 检查Nginx是否运行  
    
    

2. 远程命令执行与文件管理

  • SSH连接执行命令
    import paramiko  
    ssh = paramiko.SSHClient()  
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())  
    ssh.connect('主机IP', username='user', password='pass')  
    stdin, stdout, stderr = ssh.exec_command('ls -l /tmp')  
    print(stdout.read().decode())  
    ssh.close()  # 适用于批量执行命令  
    
  • 文件传输(SFTP)
    sftp = ssh.open_sftp()  
    sftp.put('本地文件.txt', '/远程路径/文件.txt')  # 上传文件  
    sftp.get('/远程路径/文件.txt', '本地文件.txt')  # 下载文件  
    sftp.close()    
    
    

3. 自动化部署

  • 使用Fabric部署应用
    from fabric import Connection, task  
    @task  
    def deploy(c):  
        c.run('git pull origin main')  # 拉取代码  
        c.run('pip install -r requirements.txt')  # 安装依赖  
        c.run('systemctl restart nginx')  # 重启服务  
    # 执行:fab deploy -H user@host  
    
  • 使用Ansible批量部署
    编写Playbook(deploy.yml):
    - hosts: webservers  
      tasks:  
        - name: Deploy application  
          git: repo='https://github.com/your/repo.git' dest=/var/www/app  
        - name: Install dependencies  
          pip: requirements=/var/www/app/requirements.txt  
        - name: Restart service  
          systemd: name=nginx state=restarted  
    
    执行命令:ansible-playbook deploy.yml

4. 定时任务调度

  • 通过crontab设置定时任务
    crontab -e  
    # 每分钟执行监控脚本  
    * * * * * /usr/bin/python3 /path/to/monitor.py >> /var/log/monitor.log 2>&1  
    
    查看任务:crontab -l;重启服务:systemctl restart crond

三、进阶工具与优化

  • OpsManage平台
    基于Python的自动化运维平台,支持代码部署、任务调度、资产管理,适合企业级复杂场景,可通过Web界面管理。
  • 日志管理
    使用logging库记录脚本运行日志,便于排查问题:
    import logging  
    logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(message)s')  
    logging.info('脚本开始执行')    
    
    

四、注意事项

  • 安全性:SSH连接使用密钥认证替代密码,避免在脚本中硬编码敏感信息。
  • 依赖管理:通过pip freeze > requirements.txt记录依赖,确保环境一致性。
  • 性能优化:对于高频监控任务,可降低轮询间隔或使用异步IO(如asyncio)。

以上实践可显著提升CentOS系统的运维效率,减少人工干预,降低出错风险。

0