Workerüberwachung
Wir kennen das ja alle, das Wochenende wird eingeläutet, alle verlassen schnellstmöglich das Büro und dann ab ins Blaue, bzw. im Winter ins weiße.
Alle schauen am Wochenende auf Ihre E-Mails, aber keiner schaut zwischendurch mal, ob denn der Worker wirklich noch seinen Dienst tut.
Daher habe ich mir, auch weil es im JTL -Forum längere Diskussionen darüber gab, Gedanken gemacht, wie das am besten gelöst werden kann, so lange der Worker sich nicht selbst melden kann.
hier nun meine Anleitung dazu (bitte beachten, das Script ist erst ab MS SQL 2012 lauffähig):
:: Version 1.1 :: MS SQL Version 2012+ :: Copyright (C) 2011 - 2016 Andreas Petermann :: copyright css-umsetzung :: author Andreas Petermann <info@css-umsetzung.de> :: :: :: :: Dieses Script darf kostenlos verwendet werden. Es ist nicht gestattet die Copyright Hinweise zu entfernen, :: bzw. das Script mit einem anderem Copyright Hinweis zu verkaufen. :: :: Dieses Script schaut nach, wie lange es her ist, dass der Worker einen Abgleich der jeweiligen Plattform gestartet hat :: wenn ein Abgleich zu lange her ist, bei einer der Plattformen, wird einmalig eine Mail versendet. :: Emails über das Windows system schreiben -> https://sourceforge.net/projects/blat/files/ :: blat.exe -to <Empfänger> -f <Absender> -u <User> -pw <Passwort> -server <Servername> -s <Betreff> -body <Nachrichtentext> -attacht <Pfad zur angehängten Textdatei> :: Die Daten eurer Instanz set INSTANCE=tcp:<Computer,Port\Instance> set DATABASE=<Datenbank> set PASSWD=<Password> set USER=<User> :: der Pfad in dem Ihr alles laufen lasst set SAVEPATH=<C:\Pfad-irgendwohin\> :: Der Pfad, wo Ihr blat.exe abgelegt habt set BlatPath=<C:\Pfad-irgendwohin\blat.exe> :: eure smtp Daten um eine mail zu senden set emailTo=<email@toUser.de> set emailFrom=<email@fromWorker.de> set emailSmtp=<youreDomain.de> set emailUser=<username> set emailPass=<userpass> set emailBody=Dein Worker stresst gerade ein wenig, es könnte aber auch sein, dass du mehrere Artikel geändert hast und der Abgleich daher verzögert ist. set emailSubject=Dein Worker mal wieder, im Anhang befindet sich der Status der letzten Abgleiche set emailPositiveBody=Dein Worker hat sich wieder beruhigt. set emailPositiveSubject=Dein Worker arbeitet wieder innerhalb der angegebenen Zeiten :: xx ist die Anzahl an Minuten, ich würde hier eine 30 oder eher 60 setzen da es ja mal sein kann das der Worker mehr zu tun hat Plattformen die nicht bedient werden stehen dann auf "0" set maxMinsShop=60 set maxMinsEbay=0 set maxMinsAmazon=0 :: Ab gibt es nichts mehr zu ändern oder anzupassen, es sein denn Ihr wisst was Ihr tut :: Diese Daten brauchen nicht angepasst zu werden @echo off cls set DBList=%SAVEPATH%LastStart.txt set LOCKFILE=%SAVEPATH%errorIsSend.log set TABLENAME=dbo.tWorkerInfo set concatShop=CONCAT('letzter Start Shopabgleich: ', Format([dShopStart],'dd-mm-yyyy / hh:mm:ss'), ' - Dies war vor ',DATEDIFF(minute,dShopStart,getdate()), ' Minuten') as shopInformation, set concatEbay=CONCAT(CHAR(13) + CHAR(10) + 'letzter Start ebayabgleich: ', Format([dEbayStart],'dd-mm-yyyy / hh:mm:ss'), ' - Dies war vor ',DATEDIFF(minute,dEbayStart,getdate()), ' Minuten') as ebayInformation, set concatAmazon=CONCAT(CHAR(13) + CHAR(10) + 'letzter Start Amazonabgleich: ', Format([dAmazonStart],'dd-mm-yyyy / hh:mm:ss'), ' - Dies war vor ',DATEDIFF(minute,dAmazonStart,getdate()), ' Minuten' ) as amazonInformation set whereMaxMinShop=((DATEDIFF(minute,dShopStart,getdate()) ">" %maxMinsShop% OR dShopEnde IS NULL) AND %maxMinsShop% ">" 0) set whereMaxMinEbay= OR ((DATEDIFF(minute,dEbayStart,getdate()) ">" %maxMinsEbay% OR dEbayEnde IS NULL) AND %maxMinsEbay% ">" 0 ) set whereMaxMinAmazon= OR ((DATEDIFF(minute,dAmazonStart,getdate()) ">" %maxMinsAmazon% OR dAmazonEnde IS NULL) AND %maxMinsAmazon% ">" 0 ) SqlCmd -U "%USER%" -P "%PASSWD%" -S "%INSTANCE%" -h-1 -W -Q "SET NoCount ON; SELECT %concatShop% %concatEbay% %concatAmazon% from %DATABASE%.%TABLENAME% where %whereMaxMinShop:"=% %whereMaxMinEbay:"=% %whereMaxMinAmazon:"=% " > "%DBList%" for /f %%i in ("%DBList%") do if %%~zi GTR 10 goto :WriteMail goto :Deletelock :WriteMail echo Es gibt ein Problem IF EXIST %LOCKFILE% goto :end %BlatPath% -to "%emailTo%" -f "%emailFrom%" -u "%emailUser%" -pw "%emailPass%" -server "%emailSmtp%" -s "%emailSubject%" -body "%emailBody%" -attacht "%DBList%" type NUL > %LOCKFILE% goto :end :Deletelock IF EXIST %LOCKFILE% goto :WritePositiveMail goto :end :WritePositiveMail del %LOCKFILE% /s /q %BlatPath% -to "%emailTo%" -f "%emailFrom%" -u "%emailUser%" -pw "%emailPass%" -server "%emailSmtp%" -s "%emailPositiveSubject%" -body "%emailPositiveBody%" :end echo fertig
Um über den Rechner, auf dem der Server läuft eine E-Mail zu schreiben, wird ein Programm benötigt, in diesem Script erfolgt der E-Mail Versand über Blat.exe
Forumsbeitrag: Forum - Worker überwachung?
Unter diesem Link kann dieses Programm heruntergeladen werden:
https://sourceforge.net/projects/blat/
Die Bash Datei kann hier heruntergeladen werden:
Angezeigte Bash Datei