在 Debian 上使用 Python 进行自动化运维
一 环境准备与基础配置
sudo apt update && sudo apt install -y python3 python3-pip。python3 -m venv venvsource venv/bin/activatepip install -r requirements.txt二 远程执行与批量运维
pip install fabricfrom fabric import Connection; conn = Connection('user@host'); conn.run('whoami')@task def update_system(c): c.run('sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y')fab -H host1,host2 update_systempip install paramikossh = paramiko.SSHClient(); ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()); ssh.connect('host', username='user', password='pass'); stdin, stdout, stderr = ssh.exec_command('ls -l')sftp = ssh.open_sftp(); sftp.put('local', '/remote'); sftp.get('/remote', 'local'); sftp.close(); ssh.close()三 定时与常驻任务管理
crontab -e0 2 * * * /usr/bin/python3 /opt/ops/backup.py[Unit]
Description=My Python Script
After=network.target
[Service]
ExecStart=/usr/bin/python3 /opt/ops/monitor.py
Restart=always
User=ops
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable --now my-python-script.servicesudo apt install -y supervisor[program:my-python-script]
command=/usr/bin/python3 /opt/ops/worker.py
autostart=true
autorestart=true
stderr_logfile=/var/log/my-python-script.err.log
stdout_logfile=/var/log/my-python-script.out.log
sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start my-python-script四 监控告警与日志实践
pip install psutilimport psutil, smtplib
from email.mime.text import MIMEText
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory().percent
if cpu > 80 or mem > 80:
msg = MIMEText(f"CPU: {cpu}%, Memory: {mem}%")
msg['Subject'] = '服务器资源告警'
msg['From'] = 'ops@example.com'
msg['To'] = 'admin@example.com'
with smtplib.SMTP('smtp.example.com') as s:
s.send_message(msg)
import requests
def check(url):
try:
r = requests.get(url, timeout=5)
print('UP' if r.status_code == 200 else 'DOWN')
except requests.RequestException as e:
print('DOWN', e)
check('http://localhost/health')
sudo apt install -y unattended-upgrades && sudo dpkg-reconfigure unattended-upgrades,降低漏洞暴露时间。五 配置管理与 CI/CD 集成
sudo apt install -y ansible- hosts: webservers
become: yes
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
- name: Ensure service is running
service:
name: nginx
state: started
enabled: yes
ansible-playbook -i inventory.ini web.ymlpip install -r requirements.txt、pytest、ansible-playbook 等步骤,实现构建、测试、部署一体化流水线。