یک اسکریپت Bash را معرفی میکنیم که برای نظارت بر فضای هارد و انجام اقدامات خاص طراحی شده است. این اسکریپت بهطور خودکار فضای هارد سرور را بررسی میکند و اگر بیش از 85% از هارد پر شده باشد، پیام صوتی از طریق مرکز تماس به یک داخلی خاص از پیش تعریف شده ارسال میکند. سپس اگر فضای هارد بیشتر از 90% باشد، فایلهای قدیمی از مسیرهای مشخص حذف میشوند تا مرکزتماس به علت پرشدن حجم هارد دیسک قطع نشود.
مشخصات اسکریپت:
- چک کردن حجم هارد: این اسکریپت بهطور خودکار حجم استفاده شده از هارد را بررسی میکند.
- ارسال پیام صوتی به یک داخلی خاص جهت اعلان: اگر استفاده از هارد بیشتر از 85% باشد، دو بار پیغام صوتی از طریق مرکزتماس به یک داخلی خاص از پیش تعریف شده ارسال میشود.
- حذف فایلهای قدیمی: اگر فضای دیسک بیشتر از 90% باشد، فایلهای قدیمی یک ماه گذشته در مسیرهای مشخص شده حذف میشوند.
مسیرهای مشخص شده جهت حذف کردن لاگ های قدیمی:
1.حذف لاگ های دیتابیس در مسیر /var/log/mongodb/ که بیشتر از 30 روز از ایجاد آن میگذرد.
2.حذف بکاپ های روزانه و هفتگی که بیشتر از 30 روز از ایجاد آن گذشته است.
مراحل پیادهسازی اسکریپت:
** اسکریپت Bash (check_disk_usage.sh
)**
اسکریپت زیر را ایجاد کنید:
- ما در مسیر /usr/local/bin/ فایل را ایجاد کرده ایم.
#!/bin/bash
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
ASTERISK_EXTENSION="722"
VOICE_FILE="/var/lib/asterisk/sounds/check_disk/sound.wav"
if [ "$DISK_USAGE" -gt 85 ]; then
sudo asterisk -rx "channel originate SIP/$ASTERISK_EXTENSION extension 1234@main_routing" < $VOICE_FILE
echo "پیام صوتی اول ارسال شد. یک ساعت منتظر میمانیم..."
sleep 3600
sudo asterisk -rx "channel originate SIP/$ASTERISK_EXTENSION extension 1234@main_routing" < $VOICE_FILE
echo "پیام صوتی دوم ارسال شد."
DISK_USAGE=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$DISK_USAGE" -gt 90 ]; then
echo "فضای دیسک بیشتر از 90% است. حذف فایلهای قدیمی..."
find /var/spool/simotel/backup/weekly/ -type f -mtime +30 -exec rm -f {} \;
find /var/spool/simotel/backup/daily/ -type f -mtime +30 -exec rm -f {} \;
find /var/log/mongodb/ -type f -name "mongo.log.20*" -mtime +30 -exec rm -f {} \;
echo "فایلهای قدیمی حذف شدند."
else
echo "فضای دیسک کمتر از 90% است. هیچ فایلی حذف نشد."
fi
fi
موزیک یا فایلی که در 2 تماس اولیه از سیستم برقرار میشود و پخش خواهد شد را باید در مسیر زیر بگذارید (موزیک دیفالت را از اینجا میتوانید دانلود نمایید):
/var/lib/asterisk/sounds/check_disk/sound.wav
تنظیمات کرون برای اجرای اسکریپت:
برای اجرای اسکریپت بهطور خودکار هر روز در ساعتهای مشخص (مثلاً ساعت 12 ظهر و 1 بعدازظهر)، دستور کرون زیر را به فایل کرونتب اضافه کنید:
- ویرایش فایل کرونتب:
crontab -e
- اضافه کردن خطوط زیر برای اجرای اسکریپت در ساعتهای 12:00 و 13:00:
0 12 * * * /bin/bash /usr/local/bin/check_disk_usage.sh
0 13 * * * /bin/bash /usr/local/bin/check_disk_usage.sh
مجوزهای اسکریپت:
chmod +x /usr/local/bin/check_disk_usage.sh
توضیحات:
ایجاد سناریوی تماس پیغام صوتی که به داخلی قرار هست ارسال شود را در سیموتل به شرح زیر ایجاد میکنیم و context را هم در کد و هم در سناریو main_routing تنظیم کرده ایم و تماس با pattern 1234 وارد موزیک میگردد و فایل موزیک را میتوانید از اینجا نیز دانلود و در سناریو تنظیم نمایید:
همچنین در اسکریپت، در خط زیر داخلی که میخواهید زنگ بخورد را تنظیم بفرمایید:
ASTERISK_EXTENSION="722"
بررسی و اجرای دستی اسکریپت
برای بررسی اینکه اسکریپت به درستی کار میکند، میتوانید آن را به صورت دستی اجرا کنید:
/bin/bash /usr/local/bin/check_disk_usage.sh
درصورت داشتن هرگونه سوال جهت بررسی، سوالات خود را میتوانید در همین پست فاروم مطرح بفرمایید.