جڏهن هڪ ڪلائنٽ لاء هڪ حل ٺاهيندي، 2 ڪم پيدا ٿيا جيڪي مون کي خوبصورت ۽ باقاعده زيبڪس ڪارڪردگي سان حل ڪرڻ چاهيندا هئا.
ڪم 1. Mikrotik routers تي موجوده firmware ورجن کي ٽريڪ ڪرڻ.
ڪم آساني سان حل ڪيو ويو آهي - HTTP ٽيمپليٽ ۾ ايجنٽ شامل ڪندي. ايجنٽ Mikrotik ويب سائيٽ تان موجوده ورزن وصول ڪري ٿو، ۽ ٽرگر موجوده ورزن کي موجوده ورزن سان ڀيٽي ٿو ۽ تفاوت جي صورت ۾ الرٽ جاري ڪري ٿو.
جڏهن توهان وٽ 10 روٽرز آهن، اهڙي الگورتھم نازڪ ناهي، پر 3000 روٽرز سان ڇا ڪجي؟ سرور ڏانهن 3000 درخواستون موڪليو؟ يقينن، اهڙي اسڪيم ڪم ڪندي، پر 3000 درخواستن جو بلڪل خيال مون کي مناسب نه هو، مون کي ٻيو حل ڳولڻ چاهيو. ان کان سواء، اڃا تائين اهڙي الورورٿم ۾ هڪ خرابي هئي: ٻئي طرف هڪ ڊي ايس حملي لاء هڪ IP کان درخواستن جو تعداد شمار ڪري سگهي ٿو، اهي صرف ان تي پابندي لڳائي سگهن ٿا.
ڪم 2. مختلف HTTP ايجنٽ ۾ اختيار ڏيڻ واري سيشن کي استعمال ڪندي.
جڏهن هڪ ايجنٽ کي HTTP ذريعي "بند" صفحن مان معلومات حاصل ڪرڻ جي ضرورت آهي، هڪ اختيار جي ڪوڪي جي ضرورت آهي. هن کي ڪرڻ لاء، عام طور تي "لاگ ان / پاسورڊ" جوڙو سان گڏ هڪ معياري اختيار فارم آهي ۽ ڪوڪيز ۾ سيشن ID سيٽنگ.
پر اتي ھڪڙو مسئلو آھي، ھيڊر ۾ ھن قدر کي متبادل ڪرڻ لاء ھڪڙو HTTP ايجنٽ آئٽم کان ٻي شيء جي ڊيٽا تائين رسائي ناممڪن آھي.
هتي هڪ "ويب اسڪرپٽ" پڻ آهي، ان جي هڪ ٻي حد آهي، اها توهان کي تجزيي ۽ وڌيڪ بچت لاء مواد حاصل ڪرڻ جي اجازت ناهي. توھان صرف صفحن تي ضروري متغيرن جي موجودگي جي جانچ ڪري سگھو ٿا يا اڳ ۾ حاصل ڪيل متغيرن کي ويب اسڪرپٽ مرحلن جي وچ ۾ پاس ڪري سگھو ٿا.
انهن ڪمن جي باري ۾ ٿورڙي سوچڻ کان پوء، مون ميڪرو استعمال ڪرڻ جو فيصلو ڪيو جيڪي مڪمل طور تي نظر اچن ٿا مانيٽرنگ سسٽم جي ڪنهن به حصي ۾: ٽيمپليٽ، ميزبان، ٽارگيٽ يا شيون. ۽ توھان ويب انٽرفيس API ذريعي ميڪروز کي اپڊيٽ ڪري سگھو ٿا.
Zabbix وٽ سٺو ۽ تفصيلي API دستاويز آهي. api ذريعي ڊيٽا مٽائڻ لاءِ، Json ڊيٽا فارميٽ استعمال ڪيو ويندو آهي. تفصيل ۾ ڳولهي سگهجن ٿا سرڪاري دستاويز.
اسان کي گهربل ڊيٽا حاصل ڪرڻ ۽ انهن کي ميڪرو ۾ رڪارڊ ڪرڻ لاءِ عملن جو سلسلو هيٺ ڏنل ڊراگرام ۾ ڏيکاريو ويو آهي.
قدم 1
بلڪل پھريون قدم ھڪڙي عمل يا گھڻن عملن تي مشتمل ٿي سگھي ٿو. سڀ مکيه منطق پهرين مرحلن ۾ رکيل آهي، ۽ آخري 3 مرحلا بنيادي آهن.
منهنجي مثال ۾، پهريون قدم پهريون ڪم لاءِ PBX تي اختياري ڪوڪيز حاصل ڪرڻ هو. ٻئي ڪم لاء، مون کي Mikrotik firmware جي موجوده ورزن جو نمبر مليو.
پهريون قدم هر ڪيس لاء مڪمل طور تي انفرادي آهي ۽ ان جي ڪم جي منطق مختلف ٿي سگهي ٿي. اهو سڀ ڪجهه توهان جي ڪم تي منحصر آهي.
جڏهن ويب اسڪرپٽنگ سان ڪم ڪري رهيا آهيو، ٽريڪ رکو ته توهان کي ڪهڙي جوابي طريقي جي ضرورت آهي. عنوان HTTP جواب يا خود جسم بغير عنوان جي جواب؟
جيڪڏهن اجازت ڏيڻ جي ڪوڪيز جي ضرورت آهي، ته پوء جواب جو طريقو مقرر ڪريو عنوان جيئن Asterisk جي صورت ۾.
جيڪڏهن توهان کي ڊيٽا جي ضرورت آهي، جيئن ميڪروٽڪ سرور جي جواب جي صورت ۾، رکو جسم بغير عنوان جي جواب.
قدم 2
اچو ته ٻئي قدم ڏانهن وڃو. اجازت ڏيڻ وارو سيشن حاصل ڪرڻ:
جڏهن API ذريعي ڊيٽا کي اپڊيٽ ڪرڻ لاءِ هڪ الڳ اڪائونٽ ٺاهيو، پڪ ڪريو ته ڇا توهان کي گهربل ڊيٽا ويب انٽرفيس ذريعي دستياب آهي ۽ ڇا ان کي اپڊيٽ ڪرڻ ممڪن آهي. مون چيڪ نه ڪيو، ۽ پوءِ گهڻي وقت تائين مان سمجهي نه سگهيو آهيان ته مون کي گهربل ميڪرو ڇو API ۾ نظر نه آيو.
اسان کي API ۾ اختيار حاصل ڪرڻ کان پوء، اسان ميڪرو جي فهرست حاصل ڪرڻ لاء اڳتي وڌو.
قدم 3
API توهان کي نالي سان ميزبان ميڪرو کي اپڊيٽ ڪرڻ جي اجازت نٿو ڏئي، توهان کي پهريان ميڪرو ID حاصل ڪرڻ گهرجي. ان کان علاوه، هڪ مخصوص ميزبان لاء ميڪرو جي فهرست حاصل ڪرڻ لاء، توهان کي ڄاڻڻ جي ضرورت آهي هن ميزبان جي ID، ۽ هي هڪ اضافي درخواست آهي. ڊفالٽ ميڪرو استعمال ڪريو {ميزبان جي سڃاڻپ} درخواست ۾ اجازت نه آهي. مون هن طرح جي پابندي کي نظرانداز ڪرڻ جو فيصلو ڪيو:
مون هن ميزبان جي ID سان مقامي ميڪرو ٺاهيو. ويب انٽرفيس مان ميزبان ID ڳولڻ تمام آسان آهي.
ڏنل ميزبان تي سڀني ميڪرو جي فهرست سان جواب هڪ نموني سان فلٽر ڪري سگهجي ٿو:
ان ڪري، اسان کي ميڪرو جي سڃاڻپ ملي ٿي، جتي اسان کي ضرورت آهي MIKROTIK_VERSION macro جو نالو آھي جنھن کي اسين ڳولي رھيا آھيون. منهنجي حالت ۾، ميڪرو ڳولهيو ويو آهي MIKROTIK_VERSIONجيڪو ميزبان کي ڏنو ويو هو.
{mikrotik_version} پهرين قدم ۾ حاصل ڪيل قدر آهي. منهنجي مثال ۾، موجوده mikrotik firmware جو نسخو {hostmacroid} - قدر حاصل ڪئي وئي ٽئين قدم ۾ - ميڪرو جي سڃاڻپ جيڪا اسان تازه ڪاري ڪري رهيا آهيون.
پهچڻ
معياري ڪارڪردگي سان مسئلو حل ڪرڻ جو طريقو گهڻو وڌيڪ پيچيده ۽ ڊگهو آهي. خاص طور تي جيڪڏهن توهان پروگرامنگ ڄاڻو ٿا ۽ جلدي اسڪرپٽ ۾ ضروري منطق شامل ڪري سگهو ٿا.
هن طريقي جو واضح فائدو مختلف سرورن جي وچ ۾ حل جي "پورٽيبلٽي" آهي.
منهنجي لاءِ ذاتي طور تي، اها عجيب ڳالهه آهي ته HTTP ايجنٽ ڪنهن ٻئي شيءِ جي ڊيٽا تائين رسائي نٿو ڪري سگهي ۽ انهن کي درخواست واري جسم يا هيڊر ۾ متبادل ڪري سگهي ٿو. ZBXNEXT-5993].