أتمتة Linux باستخدام Bash: من السكربت إلى التشغيل التلقائي
الأتمتة هي النقطة التي تجعل Linux يعمل لصالحك بدل أن تعمل أنت على المهام المتكررة يدويًا.
في هذا الدرس ستتعلم كيف تبني سكربت Bash عملي وتجعله يعمل تلقائيا مع متابعة النتائج.
ما هي Bash Automation ولماذا هي مهمة؟
- توفير وقت يومي في المهام الروتينية
- تقليل الأخطاء البشرية
- توحيد خطوات العمل في بيئات متعددة
خطوات بناء سكربت أتمتة عملي
- حدد المهمة المتكررة بدقة
- حوّلها إلى أوامر Bash واضحة
- أضف Logging وError Handling
- اختبر يدويًا
- جدولها عبر cron
مثال سكربت Automation: Backup يومي
#!/bin/bash
set -e
SOURCE_DIR="/etc"
BACKUP_DIR="/tmp/backups"
DATE=$(date +%F_%H-%M)
LOG_FILE="/tmp/backup.log"
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_DIR/etc_backup_$DATE.tar.gz" "$SOURCE_DIR"
echo "[INFO] Backup success at $(date)" >> "$LOG_FILE"
هذا السكربت ينشئ نسخة احتياطية مضغوطة ويسجل النتيجة.
إضافة Error Handling بسيط
#!/bin/bash
LOG_FILE="/tmp/job.log"
if ! tar -czf /tmp/backup.tar.gz /etc; then
echo "[ERROR] Backup failed at $(date)" >> "$LOG_FILE"
exit 1
fi
echo "[INFO] Backup done at $(date)" >> "$LOG_FILE"
استخدم exit 1 عند الفشل حتى تعرف الأنظمة الخارجية أن المهمة لم تنجح.
جدولة سكربت الأتمتة عبر Cron
crontab -e
مثال جدول:
0 2 * * * /home/rachid/scripts/backup.sh >> /var/log/backup.log 2>&1
| الجدولة | المعنى |
|---|---|
0 2 * * * |
كل يوم الساعة 2:00 |
*/10 * * * * |
كل 10 دقائق |
إضافة تنبيه بسيط عند الفشل
مثال تنبيه عبر logger (يظهر في syslog/journal):
if ! /home/rachid/scripts/backup.sh; then
logger -t backup-job "Backup failed on $(hostname)"
fi
لاحقًا يمكنك ربط هذا التنبيه مع بريد أو Slack عبر webhook.
تتبع نتائج الأتمتة عبر Logs
tail -f /var/log/backup.log
grep -i "error" /var/log/backup.log
journalctl -t backup-job -n 50
تشغيل السكربت يدويًا قبل الجدولة
bash /home/rachid/scripts/backup.sh
echo $?
لا تضع أي سكربت في cron قبل التأكد أنه يعمل يدويًا بنجاح.
أفكار مهام جاهزة للأتمتة في Linux
- نسخ احتياطي يومي لملفات الإعداد
- تنظيف ملفات مؤقتة أقدم من X يوم
- جمع تقارير مساحة القرص وإرسالها
- فحص حالة خدمة وإعادة تشغيلها عند التوقف
تمرين عملي: سكربت Health Check تلقائي
#!/bin/bash
LOG="/tmp/health.log"
if systemctl is-active --quiet nginx; then
echo "[OK] nginx active $(date)" >> "$LOG"
else
echo "[FAIL] nginx down $(date)" >> "$LOG"
fi
جدولة كل 5 دقائق:
*/5 * * * * /home/rachid/scripts/health-check.sh
إذا امتلأ health.log بسجلات واضحة OK/FAIL، فقد بنيت أول أتمتة مراقبة ناجحة.
FAQ: أسئلة شائعة حول Bash Automation
ما المقصود بـ Bash Automation؟
هي تحويل المهام المتكررة في Linux إلى سكربتات Bash تعمل تلقائيا لتوفير الوقت وتقليل الأخطاء.
كيف أشغل سكربت Bash تلقائيا كل يوم؟
باستخدام cron عبر crontab وإضافة سطر جدولة مثل 0 2 * * * /path/script.sh.
كيف أعرف أن سكربت الأتمتة نجح أو فشل؟
من خلال تسجيل المخرجات في log file والتحقق من exit codes وإضافة تنبيه عند الفشل.
الخطوة التالية
في الدرس القادم سنتعلم أفضل ممارسات كتابة سكربتات Bash الاحترافية.
التالي: Bash Best Practices