:: Version 1.1
:: 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=MSSQLSERVER2017
set DATABASE=eazybusiness
set PASSWD=PASS
set USER=USER
:: der Pfad in dem Ihr alles laufen lasst
set SAVEPATH=C:\WorkerMonitoring\
:: Der Pfad, wo Ihr blat.exe abgelegt habt
set BlatPath=C:\Blat\full\blat.exe
:: eure smtp Daten um eine mail zu senden
set emailTo=it@mailer.de
set emailFrom=itmail@mailer.de
set emailSmtp=SMTPSERVER
set emailUser=emailUSER
set emailPass=PASSW
set emailBody=Dein Worker stresst gerade ein wenig, es koennte aber auch sein, dass du mehrere Artikel geaendert hast und der Abgleich daher verzoegert 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=90
set maxMinsEbay=90
set maxMinsAmazon=90
:: 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
REM for /f %%a in ('copy /Z "%~dpf0" nul') do set "#CR=%%a"
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 "192.168.0.11\%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