Anasayfa / python / Python apppool stop/start isapi dll copy run as admin

Python apppool stop/start isapi dll copy run as admin

Aşağıda ki koda kendim için yazdığım python script’i bulunmakta
Amaç iis üzerinde çalışan bir unigui uygulamasının stop edilip dll dosyasının yedeğinin alınıp, güncel dll dosyasının uygulamanın çalışma dizinine kopyalanması ve iis apppool unu yeniden açılması kodları kullanmak isteyen bir zahmet try except kullansın ben kullanmadım hunharca eleştirebilirsiniz 🙂

import ctypes
import sys
import time
import os
import subprocess
import shutil
import datetime
from tkinter import messagebox

apppoolname = 'testb2b'
iis_app_stop_komutu = r'%SYSTEMROOT%\System32\inetsrv\appcmd stop  apppool /apppool.name:"'+apppoolname+""
iis_app_start_komutu = r'%SYSTEMROOT%\System32\inetsrv\appcmd start apppool /apppool.name:"'+apppoolname+""

kaynak_dosya = r'D:\zamazingo\Projects\test-BILGISAYAR\B2B\Win32\Release\testB2B.dll'
hedef_dosya = r'C:\websiteleri\testb2b\testB2B.dll'
yedek_path = r'C:\websiteleri\testb2b\yedek'
ozgun_dosya_adi = 'testB2B.dll'


def yedekismitarihsaat():
    yedektarihi = datetime.datetime.now()
    return yedektarihi.strftime('%Y-%m-%d_%H-%M-%S_')


def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False


def admin_olarak_calisacak_fonksiyonlar():

    if not os.path.exists(yedek_path): # yedek pathi yoksa oluştur
        os.mkdir(yedek_path)

    if os.path.isfile(hedef_dosya):  # dll dosyasının yedeğini al
        shutil.copy2(hedef_dosya, yedek_path+'\\' +
                     yedekismitarihsaat()+ozgun_dosya_adi)

    os.system(iis_app_stop_komutu)  # iis app pool stop
    print('2 sn. Bekleme')
    time.sleep(2)

    if os.path.isfile(hedef_dosya): # eski dll dosyasını sil
        os.remove(hedef_dosya)

    shutil.copy2(kaynak_dosya, hedef_dosya) # yeni dll dosyasını kaynaktan kopyala
    os.system(iis_app_start_komutu) # iis pool start ver
    print('2 sn Bekleme')
    time.sleep(2)

    messagebox.showinfo("İşlemler", "İşlemler Tamam") # ekrana işlemler tamam yazdır


def main():
    # if 1==1: haburası debug için lazım oldu
    if is_admin(): # admin kontrol
        admin_olarak_calisacak_fonksiyonlar()
    else:
        ctypes.windll.shell32.ShellExecuteW(
            None, "runas", sys.executable, __file__, None, 1)


if __name__ == "__main__": # import edilmeden çağrım kontrol
    main()

 

Hakkında ibrahim

İlgili Makaleler

python locale.Error: unsupported locale setting locale.setlocale(locale.LC_ALL, ‘Turkish_Turkey.1254’)

if os.name == 'nt': locale.setlocale(locale.LC_ALL, 'Turkish_Turkey.1254') yeni windows updateleri ile artık Türkiye (‘Turkish_Türkiye’, ‘1254’)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir