現場実践|シェルスクリプト入門

インフラエンジニアのシェルスクリプト実践入門|現場で使える自動化スクリプト集

「シェルスクリプトって何から覚えればいい?」——定期バックアップ・ログ確認・ヘルスチェック等、インフラ現場で実際に使えるシェルスクリプトの書き方を実例付きで解説します。

読了目安:約18分更新日:2026年3月

💡 シェルスクリプトはインフラエンジニアにとって「包丁」に相当する基本ツール。条件分岐・ループ・関数・エラーハンドリングの基礎を身につけておくことが重要です。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有SES現場を複数経験

現場でシェルスクリプトによる運用自動化を多数実施してきた立場から、実践的なスクリプト例を解説します。

1. シェルスクリプトの基本構文

#!/bin/bash
SERVER="web01"

# 条件分岐
if ping -c 1 $SERVER &>/dev/null; then
    echo "$SERVER は疎通OK"
else
    echo "ERROR: $SERVER に疎通できません"
    exit 1
fi

# 配列とループ
SERVERS=("web01" "web02" "db01")
for server in "${SERVERS[@]}"; do
    echo "確認中: $server"
done

2. ディスク使用率監視スクリプト(実践例)

#!/bin/bash
THRESHOLD=80
SLACK_URL="https://hooks.slack.com/services/xxxx"

df -h | grep -v Filesystem | grep -v tmpfs | while read -r line; do
    USAGE=$(echo "$line" | sed "s/%//g" | tr -s " " | cut -d " " -f5)
    MOUNT=$(echo "$line" | tr -s " " | cut -d " " -f6)
    
    if [ "$USAGE" -gt "$THRESHOLD" ]; then
        MESSAGE="警告: $MOUNT のディスク使用率が ${USAGE}% です"
        curl -s -X POST \
          -H "Content-Type: application/json" \
          -d "{"text": "$MESSAGE"}" "$SLACK_URL"
    fi
done

3. エラーハンドリングのベストプラクティス

  • set -e:コマンド失敗時に即座にスクリプトを終了する。意図しない処理の継続を防ぐ
  • set -u:未定義変数を参照したときにエラーを発生させる。変数名のtypoを防ぐ
  • trap(終了時処理):trap “rm -f /tmp/lockfile” EXIT でスクリプト終了時のクリーンアップを定義する
  • ログに日時を記録:echo “$(date +”%Y-%m-%d %H:%M:%S”) 処理完了” でタイムスタンプ付きログを残す

4. シェルスクリプトとPythonの使い分け

また、「シェルスクリプトではなくPythonを使う」判断基準は「複雑な文字列処理・APIコール・構造化データ(JSON・CSV)の操作が必要な場合」です。単純なコマンドの組み合わせ・ファイル操作・プロセス管理はシェルスクリプトの方が適しています。

📌 この記事のポイント
  • 条件分岐・ループ・エラーハンドリング(set -e・set -u)の3つがシェルスクリプトの基本
  • ディスク監視・Slack通知等の運用自動化スクリプトはインフラエンジニアの定番実装
  • 複雑な文字列処理・APIコール・JSON操作が必要になったらPythonへの移行を検討する

キャリアの疑問、一緒に解決しませんか?

Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。

※シェルスクリプトの動作はシェルのバージョン・OS環境により異なります。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:経営/個人事業/アパレル