اجرای یک Action یا اسکریبت با کلیک بر روی آیکون روی نقشه


#1

سلام
من میخوام روی MAP خودم یک آیکون داشته باشم که وقتی اپراتور روی آن کلیک کرد یک اسکریبپ روی سرور اجرا بشه . به عنوان مثال من روی سرور های داخل شبکه خودم یک اسکریپت برای هر کار مثلا ریبوت کردن سرور یا اجرای یک برنامه اجرایی روی سرور داشته باشم که با کلیک کردن اپراتور مانیتورینگ بر روی آیکون مربوطه بر روی سرور بتواند آن اسکریبت را بدون وصل شدن به سرور اجرا نماید . این کار را با استفاده از Administration -> script انجام دادم . اما این روش یک حالت کلی داره و نمیشه به یک اسکریبت خاص روی یک سرور خاص اشاره نمود . پیشنهادی برای این کار دارین ؟


#2

سلام شما می تونید برای انجام دادن این کار اسکریپتتون رو پارامتریک کنید. یعنی بجای اینکه اسکریپت شما فقط دستورات رو به صورت کلی اجرا کنه باید از ورودی آدرس هاست مورد نظر رو بگیره و کارشو انجام بده. مثلا اگر اسکریپت شما اسمش myscript.sh هستش و در مسیر /bin/ قرار داره عبارتی که شما باید برای map جلوی اسم myscript.sh از ماکرو {HOST.CONN} استفاده کنید.


#3

میشه یک نمونه بیشتر توضیح بدید . پارامتری را متوجه شدم . اما اینکه چطور فراخوانی کنم متوجه نشدم .
در ضمن اینکه آیا این روش روی سرور های ویندوزی هم عمل میکند یا خیر ؟
توی مپ چطور اسکریبپ را فراخوانی کنم . با همون روش Administratio -> script ؟
اگر امکان داره یک نمونه اینجابذارین ممنون میشوم


#4

ببینید تمام اسکریپت های شما روی سرور زبیکس اجرا می شن. بنابراین شما به جای اینکه از یک اسکریپت کلی استفاده کنین فقط کافیه تمام متغییر هایی رو تعریف کنید که نیاز دارین با اونا سرور و کاری که باید روش انجام بشه رو مشخص کنید.
اینکه دستوراتی که داخل اسکریپت نوشتین آیا امکان اجرا روی ویندوز رو هم داره یا نه بستگی داره به کاری که می خواین انجام بدین که البته خیلی کلی توضیح دادین.
برای فراخوانی اسکریپت ها فقط کافیه به اسکریپت های نمونه که زبیکس به صورت پیش فرض ایجاد کرده توجه کنید. شما به هر تعداد پارامتر که بخواهید می تونید به یه اسکریپت پاس بدین.


#5

این پارامتر تعریف کردن توی اسکریبت ها رو متوجه شدم . مشکل اصلی من الان فراخوانی این اسکریپ ها است . به عنوان مثال من میخوام یک اسکریب ریست سرور اجرا کنم که با کلیک کردن روی آیکون آپاچی کامند systemctl restart apache رو اجرا کنه و با کلیک کردن روی آیکون DNS سرویس systemctl restart bind9 رو اجرا کنه و یا با کلیک بر روی آیکون apps1 نرم افزار apps1.exe رو روی سرور اجرا کنه .
در این حالت مشکل اصلی من اینه که چطور داخل map به این اسکریبت ها اشاره کنم . اینطور که فهمیدم اسکریب فقط روی هاست اجرا میشه بنابر این اینکه چطوری متغیر رو بهش پاس بدم متوجه نشدم .
ممنون میشوم توی این مورد یه راهنمایی کنید .
مثال رو لینوکسی دادم اگه میشه روی لینوکس راهنمایی کنید تطبیق دادنش با ویندوز رو میشه هندل کرد .


#6

شاید یکی از راحتترین راه حل ها برای شما استفاده از ماکروها هستش. شما می تونید نام سرویس مورد نظرتون رو بصورت ماکرو برای اسکریپت ارسال کنید. مثلا به ازاء هر سرویس یه هاست تو زبیکس ایجاد کنید و با استفاده از ماکروی {HOST.NAME} اون سرویس رو restart کنید.