このレッスンで学ぶこと
これまでに学んだすべての知識を活用して、システム管理者の日常業務を自動化する統合スクリプトを作成します:
- システムヘルスチェック
- 自動メンテナンスタスク
- レポート生成
- 問題の自動修復
プロジェクトの概要
システム管理自動化ツールの要件
-
監視機能
- ディスク使用率
- メモリ使用率
- CPU負荷
- サービス状態
-
メンテナンス機能
- ログローテーション
- 一時ファイルクリーンアップ
- 古いバックアップ削除
- パッケージアップデート確認
-
レポート機能
- 日次/週次レポート
- 問題の要約
- 推奨アクション
ステップ1: システム情報収集
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
ステップ2: 自動メンテナンスタスク
#!/bin/bash
# クリーンアップタスク
cleanup_temp_files() {
local temp_dirs=(
"/tmp"
"/var/tmp"
"$HOME/.cache"
)
echo "一時ファイルのクリーンアップを開始..."
for dir in "${temp_dirs[@]}"; do
if [ -d "$dir" ]; then
# 7日以上前のファイルを削除
find "$dir" -type f -atime +7 -delete 2>/dev/null
echo "✓ $dir をクリーンアップしました"
fi
done
}
# ログローテーション
rotate_logs() {
local log_dir="/var/log/myapp"
local keep_days=30
echo "ログローテーションを実行..."
# 古いログを圧縮
find "$log_dir" -name "*.log" -type f -mtime +1 -exec gzip {} \;
# 古い圧縮ログを削除
find "$log_dir" -name "*.gz" -type f -mtime +$keep_days -delete
echo "✓ ログローテーション完了"
}
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
ステップ3: 統合管理システム
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
ステップ4: cronによる自動化
# crontab設定例
# 毎日午前3時にメンテナンス実行
0 3 * * * /path/to/auto_maintenance.sh >> /var/log/maintenance.log 2>&1
# 毎時システムチェック
0 * * * * /path/to/sysadmin_tool.sh check >> /var/log/syscheck.log 2>&1
# 週次レポート(月曜日午前9時)
0 9 * * 1 /path/to/sysadmin_tool.sh report
# 5分ごとの重要サービス監視
*/5 * * * * /path/to/service_monitor.sh
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
ベストプラクティス
セキュリティ考慮事項
-
権限管理
# スクリプトの権限設定 chmod 700 /usr/local/bin/sysadmin_tool.sh chown root:root /usr/local/bin/sysadmin_tool.sh
-
ログの保護
# ログディレクトリの権限 mkdir -p /var/log/sysadmin chmod 750 /var/log/sysadmin
エラー通知
# エラー時のメール通知
send_alert() {
local subject="$1"
local message="$2"
echo "$message" | mail -s "[ALERT] $subject" admin@example.com
# Slackへの通知
curl -X POST -H 'Content-type: application/json' \
--data "{\"text\":\"$subject: $message\"}" \
"$SLACK_WEBHOOK_URL"
}
パフォーマンス監視
# リソース使用量の記録
log_performance() {
local timestamp=$(date +%s)
local cpu=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
local mem=$(free | grep Mem | awk '{print ($3/$2) * 100.0}')
echo "$timestamp,$cpu,$mem" >> /var/log/sysadmin/performance.csv
}
総合演習
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
まとめ
このレッスンでは、システム管理タスクの自動化について学びました:
- 統合的なアプローチ: 監視、メンテナンス、レポートの統合
- 自動化の実装: cron、systemdによるスケジューリング
- 問題の自動検出と修復: プロアクティブな管理
- 拡張可能な設計: プラグイン、設定ファイル対応
これらの技術により、システム管理者の負担を軽減し、システムの安定性を向上させることができます。
コースの振り返り
シェルスクリプト入門コース全12レッスンを通じて、以下を学びました:
- 基礎知識: 変数、条件分岐、ループ、関数
- 実践的スキル: 文字列操作、配列、ファイル操作
- プロフェッショナル技術: エラーハンドリング、デバッグ
- 実世界のプロジェクト: バックアップ、ログ監視、システム管理
これらの知識を活用して、日々の作業を効率化し、より価値の高い業務に集中できるようになることでしょう。
継続的な学習と実践を通じて、さらにスキルを向上させていってください!