“一些使用 Python 进行自动化运维的示例脚本”的版本间的差异
跳到导航
跳到搜索
第120行: | 第120行: | ||
</pre> | </pre> | ||
+ | =2. 监控磁盘空间 (使用 psutil 库)= | ||
+ | <pre> | ||
+ | psutil 是一个跨平台库,用于系统和进程监控,特别适用于磁盘、CPU、内存等资源的监控。 | ||
+ | import psutil | ||
+ | def check_disk_usage(threshold=80): | ||
+ | disk_usage = psutil.disk_usage('/') | ||
+ | usage_percent = disk_usage.percent | ||
+ | if usage_percent > threshold: | ||
+ | print(f"警告:磁盘使用率已达到 {usage_percent}%") | ||
+ | else: | ||
+ | print(f"磁盘使用正常:使用率为 {usage_percent}%") | ||
+ | |||
+ | # 示例调用 | ||
+ | check_disk_usage() | ||
+ | |||
+ | </pre> | ||
+ | = 3. 自动化日志轮替= | ||
+ | <pre> | ||
+ | 此脚本可以自动将日志文件备份并清空原文件,用于日志轮替的简单管理。 | ||
+ | import os | ||
+ | import shutil | ||
+ | import time | ||
+ | |||
+ | def rotate_logs(log_file): | ||
+ | if os.path.exists(log_file): | ||
+ | # 生成备份文件名 | ||
+ | backup_file = log_file + '.' + time.strftime('%Y%m%d%H%M%S') + '.bak' | ||
+ | shutil.copy(log_file, backup_file) | ||
+ | |||
+ | # 清空原日志文件 | ||
+ | open(log_file, 'w').close() | ||
+ | print(f"日志文件已备份至 {backup_file},并已清空原文件。") | ||
+ | else: | ||
+ | print("日志文件不存在!") | ||
+ | |||
+ | # 示例调用 | ||
+ | rotate_logs('/var/log/my_app.log') | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | = 网络监控:检测主机是否在线 (使用 ping)= | ||
+ | <pre> | ||
+ | 这个脚本用来检测一系列主机是否在线,并记录结果。 | ||
+ | import os | ||
+ | |||
+ | def ping_host(hostname): | ||
+ | response = os.system(f"ping -c 1 {hostname}") | ||
+ | if response == 0: | ||
+ | print(f"{hostname} is up") | ||
+ | else: | ||
+ | print(f"{hostname} is down") | ||
+ | |||
+ | # 示例调用 | ||
+ | hosts = ['192.168.1.1', '192.168.1.2', 'google.com'] | ||
+ | for host in hosts: | ||
+ | ping_host(host) | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | = = | ||
+ | <pre> | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | |||
+ | = = | ||
<pre> | <pre> | ||
2024年9月29日 (日) 08:21的版本
目录
一、文件备份
python 复制 import shutil import datetime source_directory = '/path/to/source' backup_directory = '/path/to/backup' timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S') backup_filename = f'backup_{timestamp}.zip' shutil.make_archive(f'{backup_directory}/{backup_filename}', 'zip', source_directory) print(f'Backup completed: {backup_filename}')
远程服务器管理(使用 Paramiko 库)
import paramiko # 创建 SSH 对象 ssh = paramiko.SSHClient() # 允许连接不在 know_hosts 文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='remote_server_ip', port=22, username='your_username', password='your_password') # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls -l') print(stdout.read().decode()) # 关闭连接 ssh.close()
监控服务器资源(使用 psutil 库)
import psutil # 获取 CPU 使用率 cpu_percent = psutil.cpu_percent(interval=1) print(f'CPU usage: {cpu_percent}%') # 获取内存使用情况 memory = psutil.virtual_memory() print(f'Memory usage: {memory.used / memory.total * 100}%') # 获取磁盘空间 disk = psutil.disk_usage('/') print(f'Disk usage: {disk.used / disk.total * 100}%')
自动部署应用(假设使用 Flask 应用)
import os import shutil # 源应用目录 app_source_directory = '/path/to/app_source' # 目标服务器目录 server_directory = '/path/to/server' # 复制应用文件到服务器目录 shutil.copytree(app_source_directory, f'{server_directory}/app') # 在服务器上安装依赖 os.system(f'cd {server_directory}/app && pip install -r requirements.txt') # 启动应用 os.system(f'cd {server_directory}/app && python app.py &')
批量文件重命名
import os directory = '/path/to/directory' for filename in os.listdir(directory): if filename.startswith('old_prefix_'): new_filename = filename.replace('old_prefix_', 'new_prefix_') os.rename(os.path.join(directory, filename), os.path.join(directory, new_filename))
1. 远程服务器登录和命令执行 (使用 Paramiko)
Paramiko 是一个用于通过 SSH 协议与远程服务器进行交互的库。 import paramiko def execute_remote_command(hostname, username, password, command): try: # 创建 SSH 客户端 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接到远程主机 ssh.connect(hostname, username=username, password=password) # 执行命令 stdin, stdout, stderr = ssh.exec_command(command) print(f"Output: {stdout.read().decode()}") print(f"Error: {stderr.read().decode()}") ssh.close() except Exception as e: print(f"An error occurred: {e}") # 示例调用 execute_remote_command('192.168.1.100', 'admin', 'password123', 'ls -l')
2. 监控磁盘空间 (使用 psutil 库)
psutil 是一个跨平台库,用于系统和进程监控,特别适用于磁盘、CPU、内存等资源的监控。 import psutil def check_disk_usage(threshold=80): disk_usage = psutil.disk_usage('/') usage_percent = disk_usage.percent if usage_percent > threshold: print(f"警告:磁盘使用率已达到 {usage_percent}%") else: print(f"磁盘使用正常:使用率为 {usage_percent}%") # 示例调用 check_disk_usage()
3. 自动化日志轮替
此脚本可以自动将日志文件备份并清空原文件,用于日志轮替的简单管理。 import os import shutil import time def rotate_logs(log_file): if os.path.exists(log_file): # 生成备份文件名 backup_file = log_file + '.' + time.strftime('%Y%m%d%H%M%S') + '.bak' shutil.copy(log_file, backup_file) # 清空原日志文件 open(log_file, 'w').close() print(f"日志文件已备份至 {backup_file},并已清空原文件。") else: print("日志文件不存在!") # 示例调用 rotate_logs('/var/log/my_app.log')
网络监控:检测主机是否在线 (使用 ping)
这个脚本用来检测一系列主机是否在线,并记录结果。 import os def ping_host(hostname): response = os.system(f"ping -c 1 {hostname}") if response == 0: print(f"{hostname} is up") else: print(f"{hostname} is down") # 示例调用 hosts = ['192.168.1.1', '192.168.1.2', 'google.com'] for host in hosts: ping_host(host)
分享一些使用 Python 进行系统配置管理的示例脚本