خب مساله چیه ؟ من می خوام برم سفر و لازم دارم که در حین سفر بخشی از وظایف مدیریت سیستم ام رو انجام بدم. برای اینکار باید دائما بتونم به سرورم لاگین کنم و تنظیمات لازم رو انجام بدم یا مشکلات رو حل کنم یا هر کار دیگه ای که پیش می یاد. برای اینکار لازم دارم تا دائما IP سرورم رو بدونم. این آی پی با وجود پول زیادی که سازمان من داره برای یک خط ADSL می ده (حدود چهل هزار تومان در ماه برای یک خط ۲۵۶. قیمتی تقریبا دوبرابر اون چیزی که در بقیه کشورها مردم برای یک خط ۸ مگ می دهند) هر لحظه ممکنه عوض بشه.
راه حل ؟ می دونم در لینوکس چیزی هست به اسم Cron که وظیفه اش اجرای منظم و متوالی دستورات است. در عین حال من بلدم با ifconfig وضعیت کل کارت شبکه ها و IP اونها رو ببینم. پس کافیه از سیستم خودم درخواست کنم که مثلا هر شش ساعت یکبار ifconfig رو برای من اجرا کنه و خروجی اش رو برام میل کنه به آدرس ایمیلم. اون وقت کافیه من روزی چهار بار ایمیل هام رو چک کنم تا بدونم هر لحظه آی پی سرورم چنده و وضعیت کارت شبکه هاش چطوره.
برای اینکار کافیه فایل کنترل کننده cron رو ادیت کنم یعنی
اون رو ادیت می کنم و آخرش اضافه می کنم:
28 5,11,17,23 * * * root /root/sendifconfig.sh
حله ؟ اون اعداد اول می گن : هر روزی از هفته و ماه سر ساعت ۵ یا ساعت ۱۱ یا ساعت ۱۷ یا ساعت ۲۳ و ۲۸ دقیقه لینوکسم فایل sendifconfig.sh رو اجرا کنه. حالا کافیه توی اون فایل بنویسم:
#!/bin/sh
ifconfig > fidata && mail -s ifdata jadijadi@gmail.com < ifdata
شکی نیست که راه کوتاهتری هم هست ولی چون آماتور هستم ترجیح می دم راه حل های صد در صد بدون خطا (مثلا درست کردن یک فایل و اجرای اون به جای اجرای مستقیم دستور) رو استفاده کنم تا غلط یابی راحت تر بشه. با این سبک کار من می تونم اول امتحان کنم که اصولا اسکریپتی که نوشته ام آدرس کارت شبکه رو ایمیل می کنه یا نه و وقتی مطمئن شدم که اسکریپت درست است از کرون استفاده کنم.
در صورتی که علاقمند به اطلاعات بیشتری درباره Cron بودید به راهنمای مقدماتی cron مراجعه کنید (انگلیسی ساده)