⑦Pythonプログラミング

PythonでLinuxを自動化する【subprocess・os・pathlib実践ガイド】

⑦Pythonプログラミング
記事内に広告が含まれています。

PythonでのLinuxシステム管理・自動化を解説します。subprocessでコマンドを実行したりosモジュールでファイルを操作するスクリプトを作ります。

subprocessでコマンドを実行

import subprocess
import sys

# コマンドを実行して出力を取得
result = subprocess.run(
    ["df", "-h"],
    capture_output=True, text=True
)
print(result.stdout)

# エラーチェック付き
try:
    subprocess.run(["systemctl", "status", "nginx"],
                   check=True, capture_output=True, text=True)
except subprocess.CalledProcessError as e:
    print(f"エラー: {e.stderr}")

osとpathlibでファイル操作

import os
from pathlib import Path

# ディレクトリ作成
Path("/tmp/myapp").mkdir(parents=True, exist_ok=True)

# ファイル一覧
for f in Path("/var/log").iterdir():
    if f.suffix == ".log":
        print(f.name, f.stat().st_size, "bytes")

# ファイルのコピー
import shutil
shutil.copy("/etc/hosts", "/tmp/hosts.bak")

ディスク使用率チェックスクリプト

import subprocess

def check_disk_usage(threshold=80):
    result = subprocess.run(["df", "-h"], capture_output=True, text=True)
    for line in result.stdout.split("\n")[1:]:
        parts = line.split()
        if len(parts) < 6:
            continue
        usage = int(parts[4].rstrip("%"))
        mount = parts[5]
        if usage >= threshold:
            print(f"警告: {mount} の使用率が {usage}% です!")

check_disk_usage()

まとめ

  • subprocessでシェルコマンドをPythonから実行できる
  • pathlibでファイルパスをオブジェクト指向的に扱える
  • PythonでLinux管理スクリプトを書くとシェルスクリプトより読みやすい

コメント

タイトルとURLをコピーしました