在CentOS系统中,使用Python进行自动化运维可以通过以下几个步骤来实现:
安装Python: CentOS 7默认已经安装了Python 2.x,但建议安装Python 3.x,因为Python 2.x已经在2020年1月1日停止支持。可以使用以下命令安装Python 3.x:
sudo yum install python3
编写Python脚本:
使用你喜欢的文本编辑器(如vim、nano等)编写Python脚本。例如,创建一个名为backup.sh的脚本,用于备份指定目录:
#!/usr/bin/env python3
import os
import shutil
from datetime import datetime
def backup(source_dir, dest_dir):
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
backup_name = f"{source_dir}_{timestamp}.tar.gz"
dest_path = os.path.join(dest_dir, backup_name)
with tarfile.open(dest_path, "w:gz") as tar:
tar.add(source_dir, arcname=os.path.basename(source_dir))
print(f"Backup completed: {dest_path}")
if __name__ == "__main__":
source_dir = "/path/to/source"
dest_dir = "/path/to/destination"
backup(source_dir, dest_dir)
设置脚本权限: 确保脚本具有可执行权限:
chmod +x /path/to/backup.sh
计划任务(Cron): 使用Cron来定期运行你的Python脚本。编辑Cron表:
crontab -e
添加一行来设置定时任务,例如每天凌晨2点运行备份脚本:
0 2 * * * /path/to/backup.sh
日志记录:
为了更好地监控和调试,可以在脚本中添加日志记录功能。例如,使用Python的logging模块:
import logging
logging.basicConfig(filename='backup.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def backup(source_dir, dest_dir):
try:
timestamp = datetime.now().strftime('%Y%m%d%H%M%S')
backup_name = f"{source_dir}_{timestamp}.tar.gz"
dest_path = os.path.join(dest_dir, backup_name)
with tarfile.open(dest_path, "w:gz") as tar:
tar.add(source_dir, arcname=os.path.basename(source_dir))
logging.info(f"Backup completed: {dest_path}")
except Exception as e:
logging.error(f"Backup failed: {e}")
远程执行:
如果需要在多台服务器上执行相同的任务,可以使用SSH和Python的paramiko库来实现远程执行。首先安装paramiko:
pip3 install paramiko
然后编写一个脚本来远程执行备份任务:
import paramiko
def run_remote_command(hostname, username, password, command):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname, username=username, password=password)
stdin, stdout, stderr = client.exec_command(command)
print(stdout.read().decode())
print(stderr.read().decode())
client.close()
if __name__ == "__main__":
hostname = "remote_host"
username = "user"
password = "password"
command = "/path/to/backup.sh"
run_remote_command(hostname, username, password, command)
通过以上步骤,你可以在CentOS系统中使用Python实现自动化运维任务。根据具体需求,可以进一步扩展和优化这些脚本。