以下是CentOS下Python自动化运维的核心实践,涵盖工具使用与典型场景:
sudo yum install python3 python3-pip # 安装Python 3及pip
pip3 install psutil paramiko smtplib # 安装系统监控、SSH连接、邮件发送库
python3 -m venv myenv # 创建虚拟环境
source myenv/bin/activate # 激活环境
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是否运行
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 = ssh.open_sftp()
sftp.put('本地文件.txt', '/远程路径/文件.txt') # 上传文件
sftp.get('/远程路径/文件.txt', '本地文件.txt') # 下载文件
sftp.close()
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
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
crontab -e
# 每分钟执行监控脚本
* * * * * /usr/bin/python3 /path/to/monitor.py >> /var/log/monitor.log 2>&1
查看任务:crontab -l
;重启服务:systemctl restart crond
logging
库记录脚本运行日志,便于排查问题:import logging
logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(message)s')
logging.info('脚本开始执行')
pip freeze > requirements.txt
记录依赖,确保环境一致性。asyncio
)。以上实践可显著提升CentOS系统的运维效率,减少人工干预,降低出错风险。