View RSS Feed

مجتبی شمس نجاتی

اسکریپت نویسی در میکروتیک (بخش اول) - مقدمات و آشنایی

Rating: 2 votes, 4.50 average.
توسط - 2014-02-18 - 07:38 PM (بازدید: 8694)
  
اسکریپت (script) نویسی در میکروتیک را می توان اجراء چندین دستور (command) و یا ترکیب دستورات با متغیر ها و ذخیره و استفاده در مواقع مورد نیاز تعریف کرد.

هر اسکریپت میکروتیک در حالت کلی به سه طریق قابل اجرا است:

1. توسط رویدادها (events) :
در این حالت اسکریپت با اتفاق افتادن رویداد مورد نظرمان توسط یکی از ابزار scheduler یا netwatch اجرا می شود.
بعنوان مثال فرض می کنیم قصد داریم کاربرانمان در طول روز پهنای باند 2mbps داشته باشند و شب 1mbps. اینکار توسط ابزار scheduler و استفاده از اسکریپت مربوطه به راحتی قابل انجام است.
یا اگر بخواهیم با timeout شدن پینگ یک dns server یک dns server دیگر بطور اتوماتیک جایگزین شود. برای اینکار ابزار netwatch طراحی شده است.

2. توسط اسکریپت های دیگر:
در RouterOS میکروتیک می توانیم در قسمت system > scripts اسکریپت هایی آماده کنیم. این اسکریپت ها می توانند توسط اسکریپت های دیگر فراخوانی شوند.

3. بصورت دستی (manually):
می توانیم اسکریپت را بصورت دستی داخل console میکروتیک و یا از طریق terminal اجرا کنیم.

در بخش های بعد هرکدام از موارد بالا را بطور کامل بررسی می کنیم.

مثال) یک اسکریپت ساده:

1. console یا terminal میکروتیک را اجرا کنید.

2. اسکریپت زیر را وارد کنید:
کد:
:local a "persiannetworks"; :put $a;
3. با اجرا اسکریپت بالا عبارت persiannetworks را در خروجی مشاهده می کنید.

اسکریپت بالا از دو دستور تشکیل شده است:
  1. دستور اول
    کد:
    :local a "persiannetworks";
  2. دستور دوم
    کد:
    :put $a;


متوجه می شویم که:

  1. هر دستور (command) در یک اسکریپت با علامت < ; > تمام می شود.
  2. هر دستور یک پیشوند (prefix) دارد، در اینجا هر دو دستور پیشوند < : > داشتند.
  3. دستور اول تعریف متغیر a با مقدار persiannetworks است.
  4. دستور دوم فراخوانی متغیر a می باشد. پس برای فراخوانی متغیر از علامت $ پشت نام متغیر استفاده می کنیم.
  5. دستور local برای تعریف متغیر محلی و دستور put برای نمایش یا ارسال به خروجی می باشد.
  6. برای مقدار دادن به متغیر رشته ای (string) از " " یا double auotation استفاده می کنیم. (بدون " " هم متغیر مقدار می گیرد اما برای اسکریپت های پیچیده تر پیشنهاد نمی شود)


مثال) یک اسکریپت ساده دیگر:
کد:
:local a 3; :local b 2; :put ($a+$b);
  1. این اسکریپت دو متغیر a و b را با مقادیر 3 و 2 تعریف میکند و توسط دستور put جمع آنها را به خروجی ارسال میکند.
  2. برای مقدار دادن به متغیر عددی نیازی به " " نیست.


مثال) اسکریپت زیر را اجرا کنید:
کد:
:put "salam"
نکته: اگر اسکریپت یک دستور دارد، لزومی به استفاده از کاراکتر ; نیست.

مثال) اسکریپت زیر را اجرا کنید:
کد:
:put [:len [/ip route find]];
  1. اسکریپت بالا تعداد route های موجود در روتر را نمایش می دهد.
  2. برای دستورات تو در تو از [ ] استفاده می کنیم.


نکته: بعد از دستورات مانند put , len و ... حتما بایستی حداقل یک کاراکتر space وجود داشته باشد.

تا اینجا با تعاریف اولیه و مقدمات ابتدایی اسکریپت نویسی در RouterOS میکروتیک آشنا شدیم. در بخش های بعدی با جزییات و موارد پیشرفته اسکریپت نویسی آشنا می شویم.

موفق باشید.
Hakimi، ali_h، mehrzadmo و 18 نفر دیگر سپاسگزاری کرده‌اند.

Updated 2014-02-21 at 11:40 PM by mojtaba461

دسته ها
میکروتیک

نظر

  1. شناسه تصویری mohsenhvac
    با تشکر از زحمات شما . امیدوارم ادامه داشته باشه.
    موفق و سر بلند باشید
    mjzaret، mojtaba461، s_saeed_m و 2 نفر دیگر سپاسگزاری کرده‌اند.
  2. شناسه تصویری hamid67
    بسیار عالی...
    mjzaret، mojtaba461، nahvi18 و 1 نفر دیگر سپاسگزاری کرده‌اند.
  3. شناسه تصویری mamod
    Thank You My Frind
    mjzaret، mojtaba461، nahvi18 و 1 نفر دیگر سپاسگزاری کرده‌اند.
  4. شناسه تصویری aminCisco
    ممنون خیلی عالیه
    mjzaret و mojytaba سپاسگزاری کرده‌اند.
  5. شناسه تصویری mjzaret
    بسیار عالی بود

    تشکر از مطالب مفیدتون