من را در لینکدین دنبال کنید : https://www.linkedin.com/in/ahmad-reza-sarkhail-43588695
متوقف نمودن سرویس های ویندوز از راه دور با پایتون
صورت مسئله: تعدادی سرور فیزیکی/مجازی در داخل شبکه دارم که ویندوز 2008 دارن، روی هر کدوم تعدادی سرویس ویندوزی با عناوین مختلف نصب هستند که در یک کلمه با یکدیگر مشترک هستند.
هر بار به هر دلیلی که بقیه ادمین های ویندوز با اون آشنایی دارند ʕʘ̅͜ʘ̅ʔ مجبور به stop/start این سرویس ها هستم، تصور کنید 65 تا سرور دونه دونه ریموت بزن باز کن، Stop کن و ...
راه حل: چند خط کد پایتون، یه مقدار تنظیمات، دسترسی ادمین، لیست سرویسها و IP دستگاهها و هر اطلاعات دیگه ایی که میتونه کمکمون کنه مثل اسم سرور، نام کاربری و رمز عبور ...
import wmi
import csv
c = wmi.WMI()
serviceName = 'service'
with open('IPList.csv', 'r', newline='') as confFile:
csvReader = csv.reader(conf
File, delimiter='|')
for fileLines in csvReader:
c = wmi.WMI(fileLines[1], user=r"admin", password="admin1234")
for service in c.Win32_Service():
if serviceName.lower() in service.DisplayName.lower():
print(service.StopService())
نمونه فایل لیست IP ,نام سرور
در نظر داشته باشید delimiter اینجا علامت پایپ | در نظر گرفته شده که برای شما قابل تنظیم است
خروجی برنامه رو به کمک pyinstaller به این صورت تبدیل به تک فایل exe میکنیم:
فایل exe تولید شده به همراه فایل لیست IP و نام سرورها در یک فولدر به روی کلاینتی که به تمام سرورهای ما دسترسی داره منتقل میکنیم
بعد از انتقال فایل بر روی کلاینت یک cmd باز کنید ترجیحا با دسترسی ادمین به مسیر فایل کپی شده برید
فقط اسم فایل exe رو وارد کنید
خروجی که مشاهده میکنید نتیجه دستور service.StopService می باشد که مرجع آن در این لینک می باشد:
https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/stopservice-method-in-class-win32-service
لینک دانلود کد کامل:
https://github.com/ars1364/PythonerizationBoringStuff/blob/master/ManagingWindowsServices.py
مطلبی دیگر از این انتشارات
چه میزان از REST API می دونم؟
مطلبی دیگر از این انتشارات
انگیزه برنامه نویسی
مطلبی دیگر از این انتشارات
سرویس دهنده Cloud Flare