Scheduler در RouterOS اسکریپتهای مسیر /system script را در زمان یا فاصلهٔ مشخص اجرا میکند؛ مثلاً هر ساعت یک لاگ تست، یا هر روز صبح پهنایباند صف را عوض کردن. این آموزش مسیر رسمی صفحهٔ Scheduler را دنبال میکند تا زمانبندی را از WinBox و ترمینال درست بسازید، نه با حدس از فرومهای قدیمی.
آموزش Scheduler میکروتیک؛ اجرای زمانبندیشده اسکریپت
پیشنیازهایی که معمولاً جا میماند: دسترسی WinBox یا SSH با سطح مناسب، یک اسکریپت تستشده در System → Scripts (نه فقط متن روی کاغذ)، دانستن اینکه interval=0 یعنی یکبار در start-time، و آگاهی از اینکه reboot شمارندهٔ run-count را صفر میکند. نقشها را جدا کنید: اسکریپت کار را انجام میدهد؛ Scheduler فقط زمان و فاصله را میگوید؛ روتر محیط اجراست.
- اول اسکریپت را بسازید. در ترمینال مثلاً: /system script add name=log-test source=":log info message=test" یا در WinBox به System → Scripts بروید و با + همان منطق را بگذارید.
- با /system script print ببینید نام دقیقاً همان است که بعداً در Scheduler مینویسید؛ غلط املایی یعنی on-event هیچوقت پیدا نمیکند.
- مسیر زمانبند را باز کنید: ترمینال /system scheduler یا WinBox System → Scheduler.
- با + یک task بسازید. فیلد Name را معنیدار بگذارید (مثلاً run-1h) و On Event را روی نام اسکریپت بگذارید؛ طبق مستند باید همان اسکریپت در /system script وجود داشته باشد.
- برای اجرای تکراری، Interval را مثلاً 1h بگذارید. اگر فقط یکبار در ساعت مشخص میخواهید، interval را 0 بگذارید و Start Time را تنظیم کنید.
- مثال رسمی هرساعته: /system scheduler add name=run-1h interval=1h on-event=log-test سپس با /system scheduler print ستونهای START-TIME و INTERVAL و RUN-COUNT را ببینید.
- اگر میخواهید سه ثانیه بعد از بالا آمدن روتر یکبار اجرا شود، Start Time را روی startup بگذارید و interval را 0 نگه دارید. مستند میگوید اگر interval غیرصفر باشد، رفتار startup مثل «یکبار بعد از بوت» نیست.
- روی lab عمداً یک بار اجرا را با لاگ تأیید کنید؛ بعد اسکریپت واقعی (مثلاً تغییر صف در ساعت ۹ و ۱۷) را جایگزین کنید. چند task همزمان به ترتیب ظاهر شدن در لیست Scheduler اجرا میشوند.
الگوی روز/شب پهنایباند در مستند همین صفحه آمده: دو اسکریپت جدا که limit صف را عوض میکنند و دو entry Scheduler با start-timeهای مختلف. اگر منطق پیچیده شد، چند task بسازید که یکدیگر را enable/disable کنند؛ یک اسکریپت غولپیکر معمولاً عیبیابی را سخت میکند.
اگر الان RUN-COUNT صفر مانده یا اسکریپت اجرا نمیشود، در نظرات نسخهٔ RouterOS، خروجی /system scheduler print و نام دقیق اسکریپت (بدون رمز یا policy حساس) را بگذارید تا علت را جدا کنیم.
خطاهای رایج و نکات امنیتی
- on-event پیدا نمیشود → نام اسکریپت در Scripts با Scheduler یکی نیست یا اسکریپت Invalid است.
- فقط یکبار اجرا شد → interval صفر مانده؛ برای تکرار باید فاصله بگذارید.
- بعد از reboot شمارنده صفر شد → طبق مستند رفتار عادی run-count است.
- startup و interval با هم گیج شدهاند → برای یکبار بعد از بوت، startup بهاضافهٔ interval=0.
- اسکریپت با policy حساس (password و مشابه) را فقط برای taskهای لازم نگه دارید؛ Scheduler قدرت اسکریپت را در زمان بیسر و صدا آزاد میکند.
شما Scheduler را بیشتر برای نگهداری شبانه میخواهید یا برای تغییر پهنایباند در ساعات اداری؟ interval و نوع اسکریپتتان را هم بگویید.
برای نگهداری شبانه، الگوی تمیز این است که اسکریپت فقط یک کار مشخص انجام دهد (بکاپ، پاککردن لاگ قدیمی، یا تغییر صف) و Scheduler فقط زمان را بگوید. اگر دو کار به هم وابستهاند، دو task بسازید که یکدیگر را enable/disable کنند؛ مستند همین الگو را برای منطق پیچیدهتر پیشنهاد میکند.
ترتیب اجرا وقتی چند اسکریپت همزماناند مهم است: RouterOS آنها را به ترتیب ظاهر شدن در پیکربندی Scheduler اجرا میکند. اگر یکی باید دیگری را خاموش کند، جای entryها را در لیست جدی بگیرید و روی lab با فاصلهٔ کوتاه تست کنید.
بعد از reboot، صفر شدن run-count طبیعی است؛ برای مانیتور پایدار به لاگ یا ابزار مانیتورینگ تکیه کنید نه فقط به شمارنده. اسکریپتهایی با policy حساس را فقط وقتی واقعاً لازم است زمانبندی کنید.
مرجع کامل فیلدها و مثال hourly همان صفحهٔ Scheduler در مستندات RouterOS است؛ برچسبهای انگلیسی WinBox را ملاک بگیرید.