PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : میکروتیک اسکریپتینگ



rn4j1m1
May 29th, 2011, 06:20
Mikrotik Scripting
سلام دوستان ! :d
میکروتیک شاید یه سری مشکلاتی داشته باشه که البته به نظرم مشکل نیست فقط راه حلش کمی پیچیده هست
اما ایناها چیزی از قدرت میکروتیک کم نمیکنه (:d) به نظرم میکروتیک خیلی کامل هست نه به خاطر این که خودش کامله نه ! به خاطر این که امکان کامل شدن رو راحت فراهم کرده
خوب قصد دارم توی این تاپیک یکی از امکاناتی که به این کاملتر شدنه کمک میکنه رو معرفی کنم و تا جایی که بتونم و بدونم آموزش بدم

فقط چند تا مثال که میشه راحت حلشون کن که البته چون اینجا هدف آموزش هست حداقل تا پایان آموزش هیچ اسکریپ کاملی نمیذارم و دوستان چه اینجا و چه از طریق پیغام خصوصی در خواست نکنن
جلوگیری از مالتی لوگین (وقتی که از میکروتیک یوزرمنیجر استفاده میکنید)
جلوگیری از استفاده از تورنت (100 %)

فقط یه خواهشی دارم که واسه خود دوستان بهتر هست اینجوری
خواهش میکنم توی این تاپیک هیج پستی ندین که این شامل سوال ، تشکر و ... میشه
واسه تشکر هم فقط و فقط دکمه ی تشکر کافی هست

rn4j1m1
May 29th, 2011, 11:02
واسه فهرست رزرو شد !
ببخشید که مطالب اصلی مجبورم کمی صبر کنم و بعد بزارم
بهتره ی توی پست های جداگانه باشه

rn4j1m1
May 31st, 2011, 03:58
خوب برای نوشتن یه اسکریپت جدید به وسیله winbox میتونید به قسمت زیر مراجعه کنید :


System > Scripts
مراجعه کنید و روی دکمه ی Add کلیک کنید
که خوب مشخص هست هر قسمت برای چی هست
Name : که نام اسکریپت هست
Owner : که یوزری هست که اسکریپت رو نوشته
Policy : مجوز های این اسکریپت هست
Last Time Started : آخرین باری که اسکریپت اجرا شده
Run Count : شمارنده مربوط به تعداد اجرای اسکریپت هست
Source : که برنامه ــمون رو باید اینجا بنویسیم

و برای اجرای اسکریپت با winbox میتونید با انتخاب اسکریپت و کلیک روی Run Script اسکریپت مورد نظر رو اجرا کنید (که در این صورت شما اگه قرار بود چیزی رو به عنوان خروجی چاپ کنید نتیجه رو نمیتونید ببینید و باید اون رو با ترمینال اجرا کنید)

برای اجرای اسکریپت موردنظر با ترمینال میتونید به آدرس زیر مراجعه کنید :


system script
با دستور زیر میتونید لیست اسکریپت ها رو ببینید :


print
و با دستور زیر هم میتونید اسکریپت رو اجرا کنید :


run scriptname
که به جای scriptname باید نام اسکریپت رو بنویسید

rn4j1m1
May 31st, 2011, 14:45
خوب از اونجایی که این هم یه جورایی یه زبان برنامه نویسی هست میریم سراغ یکی از آداب آموزش برنامه نویسی :d یعنی چاپ جمله جادویی آموزش برنامه نویسی :d


Hello World !


خوب بر اساس چیزایی که توی پست قبل گفتم یه اسکریپت جدید ایجاد کنید و در قسمت source عبارت زیر رو بنویسید :


:put "Hello World !"

و اسکریپت رو از طریق ترمینال اجرا کنید
خروجی چاپ عبارت Hello World ! هست !

کلا برای نمایش یه عبارت میتونید از دستور put استفاده کنید
نکنه : تمامی دستورات توی میکروتیک با علامت : (دو نقطه) شروع می شوند

m.yazdian
October 28th, 2012, 10:12
دوستان کسی می تونه راهنمایی کنه که مقادیر یک Queue مثلا به نام Ali را چجوری میشه از طریق اسکریپت توی یک فایل ذخیره کرد؟

nokhodsiah2001
February 17th, 2018, 13:19
با سلام خدمت دوستان و اساتید

من در یک شرکت اینترنت رو از دو طریق hotspot و *** coonection به کاربران شبکه ارائه دادم و ردیوس سرور هم دارم

حالا مشکلی که دارم اینه که میخوام فقط یک سری از کاربران که مثلا اسم اونها با A شروع میشه فقط بتونن از *** استفاده کنن

یا کلا وصل نشن یا اگر وصل شدن داخل خود ppp active user مثلا remove بشن




اگر اسکریپتی باشه برای کل این مطلب یا حداقا بتونم اسم کاربرای متصل رو چک کنم و اونایی که با A شروع نمی شن رو remove کنم



ممنونم

T.Toosi
February 23rd, 2018, 10:47
با سلام خدمت دوستان و اساتید

من در یک شرکت اینترنت رو از دو طریق hotspot و *** coonection به کاربران شبکه ارائه دادم و ردیوس سرور هم دارم

حالا مشکلی که دارم اینه که میخوام فقط یک سری از کاربران که مثلا اسم اونها با A شروع میشه فقط بتونن از *** استفاده کنن

یا کلا وصل نشن یا اگر وصل شدن داخل خود ppp active user مثلا remove بشن




اگر اسکریپتی باشه برای کل این مطلب یا حداقا بتونم اسم کاربرای متصل رو چک کنم و اونایی که با A شروع نمی شن رو remove کنم



ممنونم


باسلام، با استفاده از API در C# نوشتم که دستورات و طریقه کارکرد مشخص هست و می توانید به MikroTik scripting language تبدیل و استفاده کنید.


List<Map<String, String>> users = con.execute("/ip/hotspot/active/print");
for (Map<String, String> att : users) {
string id = att.get(".id");
string name = att.get(".name");
name = name.Text.Substring(0, 1);
if(name != "A") {
con.execute("/ip/hotspot/active/remove .id=" + id);
}
}

nokhodsiah2001
February 23rd, 2018, 11:16
درود بر شما
سپاس از پاسختون و راهنماییتون

در خود میکروتیک اگر اسکریپتی بنویسیم بار کار کمتر نمیشه؟
اگر میشه در نوشتن اسکریپت راهنمایی هم بفرمایید

T.Toosi
February 28th, 2018, 13:30
درود بر شما
سپاس از پاسختون و راهنماییتون

در خود میکروتیک اگر اسکریپتی بنویسیم بار کار کمتر نمیشه؟
اگر میشه در نوشتن اسکریپت راهنمایی هم بفرمایید


:foreach i in=[/ip hotspot active find] do={
:local user [ip hotspot active get $i user]
:local userid [ip hotspot active get $i id]
:local first [:pick $user 0 [:find $user "a" 0]];
:if ($first != false) do={ /ip hotspot active remove id=$userid }
}

nokhodsiah2001
March 12th, 2018, 11:06
درود برشما
وسپاس فراوان از زمانی که گذاشتید

پاینده و شاد باشید
سال نو را پیشاپیش شادباش میگویم