# はじめに
ITインフラの保守運用業務において、効率化とエラー削減は重要な課題だ。
そこで私は、Pythonを用いてITインフラ管理を効率化するためのプログラムを作成したので紹介する。
—
## 1. サーバーの定期バックアップの自動化
サーバーデータのバックアップは、IT管理者の最重要タスクの一つだ。以下のスクリプトでは、指定したディレクトリを圧縮し、リモートサーバーに転送するプロセスを自動化している。
“`python
import os
import tarfile
from datetime import datetime
import paramiko
# バックアップ作成関数
def create_backup():
timestamp = datetime.now().strftime(“%Y%m%d_%H%M%S”)
backup_file = f”backup_{timestamp}.tar.gz”
with tarfile.open(backup_file, “w:gz”) as tar:
tar.add(“/path/to/backup”, arcname=”backup”)
return backup_file
# バックアップをリモートサーバーへアップロード
def upload_backup(backup_file):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(“example.com”, username=”user”, password=”password”)
sftp = ssh.open_sftp()
sftp.put(backup_file, f”/remote/path/{backup_file}”)
sftp.close()
ssh.close()
# 実行
if __name__ == “__main__”:
backup_file = create_backup()
upload_backup(backup_file)
print(f”Backup {backup_file} uploaded successfully.”)
“`
—
## 2. ネットワークデバイスの設定変更
ネットワーク構成の変更は煩雑だが、Pythonライブラリ`Netmiko`を使えば、効率的かつエラーの少ない運用が可能だ。
“`python
from netmiko import ConnectHandler
# デバイス情報
device = {
“device_type”: “cisco_ios”,
“host”: “192.168.1.1”,
“username”: “admin”,
“password”: “password”,
}
# 設定コマンド
commands = [
“interface GigabitEthernet0/1”,
“description Connected to main switch”,
“no shutdown”,
]
# 接続と設定適用
def configure_device():
connection = ConnectHandler(**device)
output = connection.send_config_set(commands)
print(output)
connection.disconnect()
# 実行
if __name__ == “__main__”:
configure_device()
“`
—
## 3. ログ解析とエラー通知の自動化
システムログを解析し、エラーが検出された際に管理者へ通知を送る例。これにより、早期対応が可能になる。
“`python
import smtplib
from email.mime.text import MIMEText
# ログ解析と通知
def analyze_and_notify():
with open(“/path/to/log/file”, “r”) as file:
errors = [line for line in file if “ERROR” in line]
if errors:
msg = MIMEText(“\n”.join(errors))
msg[“Subject”] = “Log Error Detected”
msg[“From”] = “alert@example.com”
msg[“To”] = “admin@example.com”
with smtplib.SMTP(“smtp.example.com”) as server:
server.send_message(msg)
print(f”{len(errors)} errors found. Notification sent.”)
# 実行
if __name__ == “__main__”:
analyze_and_notify()
“`
—
# まとめ
PythonはITインフラ自動化の強力な武器だ。
本記事で紹介したプログラムを応用すればさらに高度な自動化が実現できる。
Pythonを活用し、業務の効率化と信頼性向上に役立ててほしい。
コメント