يوم جيد للجميع!
هذه المرة قررت أن أصف الموقف ، الذي يبدو أنه لم يتم وصفه بشكل خاص على الإنترنت ، على الرغم من وجود بعض التلميحات فيه ، لكن معظمه ذهب إلى مجرد حفر منهجي طويل للرمز ويكي ميكروتيك نفسه.
في الواقع المهمة: لتنفيذ باستخدام التحكم SMS من العديد من الأجهزة ، على سبيل المثال تشغيل المنافذ وإيقاف تشغيله.
هناك:
- جهاز التوجيه الثانوي CRS317-1G-16S +
- نقطة الوصول Mikrotik NETMETAL 5
- مودم LTE R11e-LTE
بادئ ذي بدء ، تحتوي نقطة الوصول الرائعة Netmetal 5 على موصل ملحوم لبطاقة SIM ومنفذ لتركيب مودم LTE. لذلك ، في هذه النقطة ، في الواقع ، تم شراء أفضل مودم من ما كان متاحًا ومدعومًا من قبل نظام التشغيل الخاص بالنقطة نفسها ، وهي R11e-LTE. تم تفكيك النقطة ، تم تعيين كل شيء في مكانه (على الرغم من أنك تحتاج إلى معرفة أن بطاقة SIM موجودة تحت المودم وأنه لا يمكن الحصول عليها دون إزالة اللوحة الرئيسية) ، لذلك تحقق من بطاقة SIM للتشغيل ، وإلا فسيتعين عليك تفكيك نقطة الوصول عدة مرات.
ثم حفرنا فتحتين في العلبة ، وقمنا بتركيب 2 من أسلاك التوصيل المصنوعة وقمنا بتركيب طرفي المودم. لسوء الحظ ، لم يتم حفظ صورة العملية. من ناحية أخرى ، تم ربط الهوائيات العالمية مع قاعدة مغناطيسية على أسلاك التوصيل المصنوعة.
يتم وصف خطوات التكوين الرئيسية على الإنترنت جيدًا ، باستثناء دعامات التفاعل الصغيرة. على سبيل المثال ، يتوقف المودم عن تلقي رسائل SMS عندما تأتي من 5 قطع وتعلق في البريد الوارد ، مما يؤدي إلى محو الرسائل وإعادة تشغيل المودم لا يحل المشكلة دائمًا. لكن في الإصدار 6.44.1 ، يعمل الاستقبال بثبات أكبر. يعرض Inbox آخر 4 رسائل قصيرة ، يتم مسح الباقي تلقائيًا ولا تتداخل الحياة.
الهدف الرئيسي من التجربة هو إطفاء واجهات على جهازين في شبكة فعلية واحدة. كانت الصعوبة الرئيسية هي أن Mikrotik لا يدعم الإدارة عبر SNMP ، ولكنه يسمح فقط بقيم القراءة. لذلك ، كان لا بد لي من حفر في الاتجاه الآخر ، وهي واجهة برمجة تطبيقات Mikrotik.
لا توجد وثائق واضحة حول كيفية الإدارة ، لذلك اضطررت للتجربة وتم إجراء هذه التعليمات للمحاولات المستقبلية.
لإدارة عدة أجهزة ، تحتاج إلى خادم WEB يمكن الوصول إليه ويعمل على الشبكة المحلية ، فمن الضروري إدارته باستخدام أوامر Mikrotik.
1. في Netmetal 5 ، تحتاج إلى إنشاء نصين لتشغيلهما وإيقافهما على التوالي
system script add dont-require-permissions=no name=disableiface owner=admin policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ "/tool fetch http://WEB_SERVER_IP/di.php " add dont-require-permissions=no name=enableiface owner=admin policy=\ ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source=\ "/tool fetch http://WEB_SERVER_IP/en.php "
2. قم بإنشاء نصين على خادم الويب (بالطبع ، يجب تثبيت php على النظام في هذه الحالة):
<?php
<?php
3. قم بالتنزيل من منتدى Mikrotik routeros_api.class.php ثم ضعه في دليل يمكن الوصول إليه على الخادم.
بدلاً من sfp-sfpplus16 ، تحتاج إلى تحديد اسم الواجهة المنفصلة / المضمّنة.
الآن عند إرسال رسالة إلى رقم في النموذج
:cmd script enableiface :cmd script disableiface
ستقوم NETMETAL بتشغيل البرنامج النصي المقابل ، وهذا بدوره سينفذ الأمر على خادم WEB.
سرعة العمليات عند استقبال كسور الرسائل القصيرة من الثانية. إنه يعمل بثبات.
بالإضافة إلى ذلك ، هناك وظيفة إرسال رسائل نصية قصيرة إلى الهواتف بواسطة نظام مراقبة Zabbix وفتح اتصال إنترنت احتياطي عندما تسقط البصريات. ربما يكون هذا خارج نطاق هذه المقالة ، لكنني سأقول على الفور أنه عند إرسال رسالة نصية قصيرة ، يجب أن يتناسب طولها مع الحجم القياسي لرسالة واحدة ، لأن لا يقسم Mikrotik إلى أجزاء ، وعندما تصل رسالة طويلة ، فإنه ببساطة لا يرسلها ، بالإضافة إلى ذلك ، تحتاج إلى تصفية الأحرف المرسلة إلى الرسائل ، وإلا لن يتم إرسال الرسائل القصيرة.
ملاحظة: أنا أقوم الآن بتدوين عضادات في الإصدارات السابقة من RouterOS التي كانت وكيفية التعامل معها.
1. الحد الأقصى لطول الرسالة والحروف المستخدمة في الرسائل محدودة ، لذلك اضطررت للقتال على مستوى Zabbix ، أي لتصحيح قالب إرسال الرسائل ، بحيث كان باختصار ما هو المقصود بالرسالة.
الإعدادات - الإجراءات - إرسال تقرير إلى الرسائل القصيرة - العمليات - الموضوع: المشكلة: {HOST.NAME} {TRIGGER.NAME}
وعند الاسترداد ، أرسل تقريرًا إلى الرسائل القصيرة - عمليات الاسترداد الموضوع: تم الحل: {HOST.NAME} {TRIGGER.NAME}
2. بالإضافة إلى ذلك ، البرنامج النصي نفسه ، الذي يرسل البيانات إلى المودم ، يخفض أيضًا الحد الأقصى لطول الرسالة المرسلة ، لأن إذا كانت طويلة جدًا ، فلن يتم إرسال الرسالة.
فب النصي إرسال البيانات
<?php require('/usr/lib/zabbix/alertscripts/routeros_api.class.php'); $API = new RouterosAPI(); $API->debug=true; if ($API->connect('IP ', ' ', ' ')) { $API->comm("/tool/sms/send", array( "port"=>"lte1", "phone-number"=>$argv[1], "message"=>$argv[2],)); } $API->disconnect(); echo $argv[1]; echo $argv[2]; ?>
3. تنظيف علبة الوارد لـ RouterOS <6.44
نظام Sheduler
/system scheduler
add disabled=yes interval=1m name=removeSMS on-event="/system script run 7" \
policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=nov/01/2018 start-time=19:32:00
إذا كان لديك البرنامج النصي أدناه سيكون لديك رقم تسلسلي مختلف ، ثم في المجدول ، ستحتاج إلى تغيير المدى 7 إلى الرقم المقابل
البرنامج النصي النظام
/system script
add dont-require-permissions=no name=removeSMS owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\
tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n/tool sms inbox remove 0\r\
\n/delay 1\r\
\n"
البرنامج النصي مع الرقم التسلسلي 7
4. في الإصدارات أدناه 6.38 ، ساعد في إعادة تشغيل المودم أيضًا باستخدام برامج نصية مدمجة وجدولة
/system script
add dont-require-permissions=no name=rebootLTE owner=admin policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="/\
interface lte disable 0\r\
\ndelay 10\r\
\n/interface lte enable 0\r\
\n/tool sms set receive-enabled=false\r\
\ndelay 10\r\
\n/tool sms set receive-enabled=true\r\
\n"
5. والقليل حول تجديد الفرق. لإرسال رسالة نصية ، يجوز القول على مضيف مع Zabbix بإنشاء ملف RSC ، ثم إرساله إلى ftp على Mikrotik باستخدام برنامج نصي ، ثم في المودم نفسه ، من خلال البرنامج النصي في برنامج الجدولة ، قم بتشغيل الملف المطلوب ، تم تنفيذ الأوامر ، لكن بدا لي أكثر ملاءمة لاستخدام الآلية أعلاه.
في حالة إرسال مثل ، الكود الذي تم إنشاؤه بسيط للغاية.
/tool sms send lte1 +7926xxxxxxx message "Problem: High ICMP ping response time Problem started at 17:08:04 on 2018.07.10 Problem name: High ICMP ping response time Host: Netgear7212 Severity: Warning Original problem ID: 5403803"
في هذا المثال ، تتم إزالة الأحرف الزائدة بالفعل ، والطول غير محدود. يجب أن يقوم البرنامج النصي الذي يعالج بدء التشغيل وفقًا لهذه الطريقة بعد التمرين بنسخ ملف RSC فارغ داخل ملف Mikrotik الموجود.
لم يعجبني هذا الأسلوب ، حيث أنه من حيث المبدأ لا توجد حماية ضد الأخطاء ومواطن الرسائل غير المراقبة التي لا يمكن التحكم فيها ممكنة.
في إصدار RouterOS 6.44.1 ، تم بالفعل حل مشاكل الفائض من تلك الواردة ، لذلك لا يمكنك اللجوء إلى أساليب التنظيف الجماعي للمزارع