سلام خدمت دوستان عزیز.
طبق کلیشه همهء دوستان وبلاگ نویس (!) تنبل از جمله خودم باید گله کنم که چند وقتی هست وبلاگ را آپدیت نکردم و از این بابت خوشحال نیستم.
یکی از دغدغه های اصلی من به عنوان System Administrator، اطلاع از وضعیت سرورها است.
بارها پیش آمده که مشکلات هارد دیسک، برای من مشکل ساز شدند. از این رو دنبال اسکریپتی بودم که وضعیت هارد دیسک ها را بررسی و به من اطلاع بده ، با یک جستجوی سریع به این وبلاگ رسیدم ، با ایجاد تغییرات کوچکی در اسکریپت ، آن را آماده کردم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#!/bin/bash # This script checks the health of disks email="$1" DATE=`date -R` # disks to check disk=" /dev/sda /dev/sdb" # Setting up path PATH="$PATH:/usr/bin:/usr/sbin" # variable containing all needed commands needed_commands="smartctl awk" # Checking if all needed programs are available on system for command in $needed_commands do if ! hash "$command" > /dev/null 2>&1 then echo "$command not found on systema" 1>&2 exit 1 fi done # Checking disk for disk in $disks do # Creating a array with results declare -a status=(`smartctl -a $disk | awk '/Reallocated_Sector_Ct/ || /Seek_Error_Rate/ { print $2" "$NF }'`) # Checking that we do not have any Reallocated Sectors or Seek error rate if [ "${status[1]}" -ne 0 ] then echo "Warning: Disk $disk has errors!" 1>&2 echo "${status[0]} ${status[1]}" 1>&2 mail -s "HDD Failure on $HOSTNAME" "$email"<<-EOFM Corrupted disk: $disk Date: $DATE EOFM exit 1 elif [ "${status[3]}" -ne 0 ] then echo "Warning: Disk $disk has errors!" 1>&2 echo "${status[2]} ${status[3]}" 1>&2 exit 1 fi done |
برای اجرای دستی اسکریپت باید بصورت زیر عمل کنید:
1 2 3 |
dani@danitfk:~$ ./hdd-failure.sh mymail@example.com |
حتما ایمیل ، بعد از نام اسکریپت درج شود و همینطور هم داخل CronJobs تعریف کنید.
فقط فراموش نشود که در قسمت disks ، متغیرها را بر اساس هارد دیسک های موجود در سرور تغییر دهید.