زمان بندی سرور برای آپدیت اتوماتیک و ارسال لاگ از طریق ایمیل

اگه مدیر سرور لینوکس باشین یا کلا با سرورهای لینوکس کار کرده باشین حتما میدونین یکی از مباحث مهم بروز نگه داشتن سرور هست. ولی خداییش واقعا باید هر روز بریم پای کامپیوتر به سرور متصل بشیم و بعد آپدیتش کنیم؟! چرا این فرایند رو خودکار نکنیم؟ اگه شما هم میخواین این فرایند رو خودکار کنید و لاگ آپدیت سرور رو تو ایمیلتون بگیرید، در ادامه مطلب میبینمتون!

 

اولین مرحله کار اینه که ببینیم چجوری میتونیم دستورات مورد نیاز رو زمانبندی کنیم. برای این کار از چیزی به اسم crontab (اطلاعات بیشتر) استفاده میکنیم که به صورت پیشفرض در توزیع‌های مختلفی که برپایه لینوکس هستن وجود داره. برای اینکه crontab رو باز کنیم با یوزر root به سرور متصل میشیم و این دستور رو میزنیم:

 

و ازمون میپرسه از چه ادیتوری برای ویرایش crontab میخوایم استفاده کنیم و همونطوری هم که خودش گفته آسونترین ادیتور nano هست پس عدد ۲ رو میزنیم و crontab باز میشه.

تو صفحه باز شده این دستور رو عینا مینویسیم، برای اوبونتو:

 

برای CentOS:

 

بعد از وارد کردن عبارات بالا این کلیدها رو به ترتیب فشار میدیم تا تغییرات ذخیره بشن: Ctrl +X و Y و Enter. اما قبل از ذخیره کردن حتما حواستون باشه که آدرس ایمیل خودتون رو بجای email@address.com بنویسید. خب حالا کار ما تموم شده و هر روز سرور ساعت ۱۲شب خودش رو آپدیت میکنه و لاگ رو هم برای ما ایمیل میکنه!!! اما صبر کنین! هنوز یه کار کوچیک مونده! ما باید برنامه‌ای که برای ارسال ایمیل استفاده کردیم رو نصب کنیم. پس:

 

حالا همه چی به خوبی انجام میشه 🙂 اما یه سوال، دستوراتی که استفاده کردیم دقیقا چیکار میکنن؟ بریم سراغ بررسی دستوراتی که استفاده کردیم! قبل از هرچیزی این رو بگم که من از دوتا فایل برای ذخیره لاگ استفاده کردم. یک فایل که تنها آخرین لاگ رو نگه میداره و یه لاگ دیگه که تمام لاگ‌های آپدیت توش ذخیره میشن. خب دستورات:

 

00 00 * * *: این عبارات به crontab میفهمونن که این دستورات رو هر شب ساعت ۱۲ شب انجام بده. فقط دقت کنین که اگه خواستین این زمان رو عوض کنین ۲تا صفر اول دقیقه هستن و دوتا صفر دوم ساعت هستند. مثلا اگه بخوام هر روز ساعت یک و نیم این دستورات انجام بشن باید به این شکل بنویسمشون: 30 01 * * *

 

date > last_log.txt: این دستور میگه محتویات فایل last_log.txt رو پاک کن (چون قراره فقط آخرین لاگ توش قرار بگیره) و زمان فعلی رو توش ذخیره کن.

 

&&: در واقع ما چون میخوایم چندتا دستور مختلف رو یکجا و پشت سر هم انجام بدیم از && استفاده میکنیم که معنیش اینه که بعد از اینکه دستور قبلش با موفقیت انجام شد بره سراغ انجام دستور بعدی.

 

apt-get update && apt-get -y upgrade یا yum -y update: این دستورات وظیفه آپدیت کردن برنامه‌های نصب شده رو دارن 🙂 در مورد عبارت y- هم بگم که وظیفش اینه که اگه در طول آپدیت ازمون سوالی مبنی بر تایید آپدیت یک برنامه صورت گرفت جواب مارو Yes در نظر بگیره.

 

>> last_log.txt: میگه این خروجی‌هایی که موقع آپدیت نوشته میشه رو در ادامه فایل last_log.txt ذخیره کن.

 

date >> last_log.txt: با این دستور زمان به اتمام رسیدن آپدیت سیستم هم تو فایل last_log.txt ذخیره میشه.

 

cat last_log.txt >> all_logs.txt: تمام محتویات فایل last_log.txt رو به فایل all_logs.txt که قراره تمام لاگ‌های آپدیت توش نگه داری بشن انتقال میده.

 

printf “\n\n” >> all_logs.txt: با این دستور بعد از ذخیره لاگ هر روز تو فایل all_logs.txt دوتا خط خالی هم قرار میگیرن. با این کار وقتی بخوایم همه لاگ‌ها رو ببینیم کارمون آسونتر میشه چون بین لاگ‌های هر روز با روز بعدیش یک فضای خالی ایجاد میشه.

 

mutt -s “Upodate Log” email@address.com < last_log.txt: اینو باید یک جا بگم 😀 میگه بعد از انجام موفقیت آمیز تمام مراحل قبل یک ایمیل با عنوان Update Log به ایمیلم بفرست که متن ایمیل لاگ آپدیت همون روز باشه. فقط دقت کنین که به احتمال زیاد ایمیل به پوشه Spam بره که خودتون باید تنظیمش کنید که تو اینباکستون بیاد. و یه نکته دیگه، طبق تجربه من ایمیل در کمتر از یک دقیقه ارسال میشه پس اگه یه روز دیدین که ارسال ایمیل بیش از دفعات قبلی طول کشیده میتونین شک کنین که سرور به مشکل برخورده و برید بررسی کنید که کجای کار اشکال داره.

 

دوتا نکته رو هم درنهایت بگم: یک اینکه من خودم این مراحل رو انجام دادم و مشکلی برام پیش نیومد. اما برای محکم کاری اگه یک در میلیارد برای سرورتون مشکلی پیش اومد من مسئولیتی رو قبول نمی‌کنم. و نکته دوم هم اینکه حتما یک بار خودتون به صورت دستی سرور رو آپدیت کنید و بعد از اون آپدیت رو زمانبندی کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *