
最新動(dòng)態(tài)
Python運(yùn)維工程師實(shí)戰(zhàn)腳本全書(shū)
2025-01-27Python 運(yùn)維工程師必備腳本實(shí)戰(zhàn)指南
運(yùn)維工程師的工作離不開(kāi)Python腳本的支持,以提高工作效率。本文將通過(guò)實(shí)例講解四種常用的腳本:系統(tǒng)監(jiān)控、日志分析、文件備份以及系統(tǒng)更新。每個(gè)腳本都附有相應(yīng)的代碼和應(yīng)用場(chǎng)景,幫助讀者快速掌握。

1. 系統(tǒng)監(jiān)控腳本
1.1 CPU 使用率監(jiān)控
CPU 使用率的監(jiān)控在服務(wù)器資源緊張時(shí)尤為重要。以下腳本會(huì)定期輸出 CPU 使用率。
import psutil
import time
def monitor_cpu_usage(interval=1):
while True:
cpu_percent = psutil.cpu_percent(interval=interval)
print(f"當(dāng)前 CPU 使用率: {cpu_percent}%")
time.sleep(interval)
if __name__ == "__main__":
# 每隔 5 秒監(jiān)控一次 CPU 使用率
monitor_cpu_usage(interval=5)
此腳本使用 psutil
庫(kù),能夠精確地獲取 CPU 使用率,并支持自定義監(jiān)控頻率。
1.2 內(nèi)存使用率監(jiān)控
內(nèi)存監(jiān)控是保障系統(tǒng)穩(wěn)定運(yùn)行的重要環(huán)節(jié)。以下腳本展示了內(nèi)存總量、可用量及使用率。
import psutil
import time
def monitor_memory_usage(interval=1):
while True:
mem_info = psutil.virtual_memory()
print(f"總內(nèi)存: {mem_info.total / (1024 ** 3):.2f} GB")
print(f"可用內(nèi)存: {mem_info.available / (1024 ** 3):.2f} GB")
print(f"內(nèi)存使用率: {mem_info.percent}%")
time.sleep(interval)
if __name__ == "__main__":
# 每隔 5 秒監(jiān)控一次內(nèi)存使用情況
monitor_memory_usage(interval=5)
當(dāng)服務(wù)器出現(xiàn)性能瓶頸時(shí),可以使用此腳本實(shí)時(shí)了解內(nèi)存負(fù)載。
2. 日志分析腳本
2.1 日志文件解析
日志文件中常常隱藏著系統(tǒng)異常的線索。以下腳本可以解析日志中的時(shí)間戳、級(jí)別和信息。
import re
def parse_log_file(log_file):
pattern = r\[(?P<timestamp>\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2})\] \[(?P<level>\w+)\] (?P<message>.*)
with open(log_file, r) as file:
for line in file:
match = re.match(pattern, line)
if match:
timestamp = match.group(timestamp)
level = match.group(level)
message = match.group(message)
print(f"時(shí)間: {timestamp}, 級(jí)別: {level}, 信息: {message}")
if __name__ == "__main__":
# 替換為實(shí)際日志文件路徑
log_file = "/var/log/syslog"
parse_log_file(log_file)
正則表達(dá)式實(shí)現(xiàn)靈活解析,適合多種日志格式。
3. 文件備份腳本
3.1 定時(shí)文件備份
文件丟失可能導(dǎo)致嚴(yán)重后果,因此定期備份文件是防止數(shù)據(jù)丟失的關(guān)鍵措施。以下腳本會(huì)每隔一段時(shí)間自動(dòng)備份指定文件。
import os
import shutil
import time
def backup_file(source_file, backup_dir, interval=3600):
whileTrue:
timestamp = time.strftime("%Y%m%d_%H%M%S")
backup_file = os.path.join(backup_dir, f"{timestamp}_{os.path.basename(source_file)}")
shutil.copy2(source_file, backup_file)
print(f"已創(chuàng)建備份: {backup_file}")
time.sleep(interval)
if __name__ == "__main__":
# 替換為實(shí)際文件路徑和備份目錄
source_file = "/path/to/source/file"
backup_dir = "/path/to/backup/directory"
backup_file(source_file, backup_dir, interval=3600)
企業(yè)級(jí)環(huán)境中,定期備份重要配置文件或數(shù)據(jù)庫(kù)備份文件至關(guān)重要。
4. 系統(tǒng)更新腳本
4.1 自動(dòng)化系統(tǒng)更新
保持系統(tǒng)更新有助于提升安全性與穩(wěn)定性。以下腳本可以一鍵完成系統(tǒng)的更新操作。
import subprocess
def update_system():
print("正在更新系統(tǒng)...")
subprocess.run([sudo, apt-get, update])
subprocess.run([sudo, apt-get, upgrade, -y])
print("系統(tǒng)更新完成。")
if __name__ == "__main__":
update_system()
此腳本適用于Ubuntu或Debian系統(tǒng),可用于定期更新軟件包。
總結(jié)
上述四種腳本涵蓋了運(yùn)維工程師日常工作中的多個(gè)核心場(chǎng)景,代碼簡(jiǎn)潔且實(shí)用,兼具靈活性與可擴(kuò)展性。通過(guò)實(shí)踐這些腳本,不僅可以提升運(yùn)維效率,還能有效保障系統(tǒng)的穩(wěn)定性。