Python自动化运维脚本实战
一、服务器批量操作脚本
import paramiko
def ssh_command(host, port, user, password, command):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, port, user, password, timeout=10)
stdin, stdout, stderr = ssh.exec_command(command)
output = stdout.read().decode()
ssh.close()
return output
# 使用示例
result = ssh_command('192.168.1.100', 22, 'root', 'pass', 'uptime')
print(result)
二、日志分析脚本
import re
from collections import Counter
def analyze_nginx_log(log_file):
ip_counter = Counter()
with open(log_file, 'r') as f:
for line in f:
match = re.search(r'(\d+\.\d+\.\d+\.\d+)', line)
if match:
ip_counter[match.group(1)] += 1
for ip, count in ip_counter.most_common(10):
print(f"{ip}: {count}次")
三、自动备份脚本
import os
import shutil
from datetime import datetime
class BackupManager:
def __init__(self):
self.backup_dir = '/backup'
self.date = datetime.now().strftime('%Y%m%d')
def backup_files(self, source_dirs):
for source_dir in source_dirs:
backup_name = f"backup_{self.date}.tar.gz"
os.system(f'tar -czvf {self.backup_dir}/{backup_name} {source_dir}')
四、系统监控脚本
import psutil
def get_system_info():
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory()
disk = psutil.disk_usage('/')
print(f"CPU: {cpu}%")
print(f"Memory: {mem.percent}%")
print(f"Disk: {disk.percent}%")
if __name__ == '__main__':
get_system_info()