Neu Worker überwachung?

ekpegleg

Aktives Mitglied
20. April 2016
62
5
Berlin
Kann mal jemand die Zeile erklären?

SqlCmd -U "%USER%" -P "%PASSWD%" -S "(local)\%INSTANCE%" -h -1 -W -Q "SET NoCount ON; SELECT %concatShop% %concatEbay% %concatAmazon% FROM %DATABASE%.%TABLENAME% WHERE %whereMaxMinShop:"=% %whereMaxMinEbay:"=% %whereMaxMinAmazon:"=% " > "%DBList%"

Besonders der WHERE Teil kommt mir etwas kryptisch vor ( :"=% )
Bei mir endet das Ganze in einem Fehler:
Meldung '102', Ebene '15', Status '1', Server 'SQL-SRV-W2012\JTLWAWI', Zeile 1
'Falsche Syntax in der N„he von 's'.'
 

ekpegleg

Aktives Mitglied
20. April 2016
62
5
Berlin
OK Fehler ist schon mal weg. Ich habe vorher ein s hinter den xx:10 Minuten dran gehabt ;)

Emailversand ist OK. Aber nun bleibt bei mir die LastStart.txt leer. Der Select Query mit echo müsste ja auch in der SQL Management Verwaltung funktionieren. Ich werde das mal dort testen.
 

hula1499

Sehr aktives Mitglied
22. Juni 2011
3.603
468
Supercoole Sache!!!!

Vielen Dank dafür.

(behebt auch den geistigen Mangel, falls man mal wieder vergisst, den Worker einzuschalten, nachdem man ihn vorher bewusst deaktiviert hat :D ).
 

SebiW

Sehr aktives Mitglied
2. September 2015
1.158
265
Hallo zusammen,
vielleicht könnte einer von Euch mir ja hier bei der Umsetzung behilflich sein. Die Abfrage selbst funktioniert nach ein wenig Gefiesel jetzt problemlos, die Dateien werden richtig geschrieben.
Was ich leider nicht zum Laufen bringe ist der Mailversand. Unser Server nutzt Starttls weshalb ich wie @peterPan eine Umsetzung mit Mailsend versucht habe. Leider scheitere ich da an irgendeiner Stelle.
Der Mailversand mit Mailsend aus der cmd heraus funktioniert genau so wie er sollte. Ich habe die entsprechenden Zeilen im Script ebenfalls angepasst und die blat Zeile:

%BlatPath% -to "%emailTo%" -f "%emailFrom%" -u "%emailUser%" -pw "%emailPass%" -server "%emailSmtp%" -s "%emailSubject%" -body "%emailBody%" -attacht "%DBList%"

durch die für Mailsend ersetzt:

%MailsendPath% -to "%emailTo%" -from "%emailFrom%" -port 587 -starttls -v -auth -smtp "%emailSmtp%" -user "%emailUser%" -pass "%emailPass%" -sub "%emailSubject%" -M "%emailBody%" -attach "%DBList%"

Leider läuft der Mailversand aus dem Script ums verrecken nicht an.
Fülle ich die Parameter mit den richtigen Werten und starte das ganze aus der CMD wird die Testmail problemlos verschickt. Kann vielleicht einer der Versteher hier ein wenig behilflich sein?
Ich vermute es könnte daran liegen dass Mailsend das Subject "" will aber hier kommen meine begrenzten Fähigkeiten leider über ihre Kapazitäten hinaus...
 

SebiW

Sehr aktives Mitglied
2. September 2015
1.158
265
Problem behoben, für alle die da vielleicht auch noch drüber stolpern: Bei Mailsend dürfen die Parameter wie %emailTo% nicht in "" stehen.

%MailsendPath% -to %emailTo% -from %emailFrom% -port 587 -starttls -v -auth -smtp %emailSmtp% -user %emailUser% -pass %emailPass% -sub "%emailSubject%" -M "%emailBody%" -attach %DBList%

und das Ding läuft :)

Danke für dieses SUPER Script!
 
  • Gefällt mir
Reaktionen: peterPan

volvisti

Gut bekanntes Mitglied
18. Juli 2017
194
8
Hallo zusammen,
würde das Script gerne einsetzen, habe auch die Änderungen in Richtung mailsend durchgeführt.

Allerding klappt bei mir der EMail-Versand und das Erstellen der errorIsSend. log nur, wenn ich die Datei mailsend.exe in das gleiche Verzeichnis lege, aus der auch die Batch gestartet wird.
(Das setzen des Mailsandpath und den Aufruf des MailsendPath unter :WriteMail muss entsprechend geändert werden und die LastSart.txt darf nicht leer sein)

Wie vorgeschlagen habe ich auch die Zeile "set Instance..." und entsprechend das Statement geändert -> (local) vor \%instance% entfernt.
Obwohl für JTL nicht zwingend erforderlich habe ich sogar auf dem Server einen ODBC-Connect eingerichtet.
-> auf der Konsole (Server oder Client) bekomme ich die gleiche Meldung wie bei der Batch, wenn ich nur das SQLCMD mit den entsprechenden Paramentern ausführe.

Der Connect zur Db will einfach nicht klappen. :(

1539349005875.png

Hat jemand eine Idee wo der Haken liegen könnte?
 

volvisti

Gut bekanntes Mitglied
18. Juli 2017
194
8
Hallo css-Umsetzung,
kam leider erst jetzt dazu, das überarbeitete Script auszuprobieren.
ich schätze mal es lag an dem tcp: vor der Instanz, aber wie dem auch sei, es funzt und ich bedanke mich ganz herzlich bei Dir.
Schönen Tag noch
 

vmgmbh

Sehr aktives Mitglied
26. November 2010
1.054
12
Hey und vielen dank an @css-umsetzung für das fantastische Tool

Wir haben das ganze zum laufen gebracht aber das ganze verhält sich etwas strange. Wir bekommen immer wieder emails mit Infos dass der Worker das letzte mal vor 5 min abgeglichen hat und deswegen nicht richtig funzt obwohl wir aber 90 min als Puffer eingestellt haben.

Hier mal unser Code:
Bash:
::     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
im Aufgabenplaner haben wir folgendes konfiguriert für die wiederholende zeitliche Ausführung des Scipts:
SIEHE BILD im Anhang


Hat hier jemand rat warum ich soeben eine Email bekomme obowohl der Worker tadellos läuft?
Inhalt der Mail
Code:
letzter Start Shopabgleich: 25-01-2019 . 04:01:00 - Dies war vor 2 Minuten
letzter Start ebayabgleich: 25-03-2019 . 04:03:00 - Dies war vor 0 Minuten
letzter Start Amazonabgleich: 25-59-2019 . 03:59:17 - Dies war vor 4 Minuten
Kurz darauf dann die Mail dass wieder alles passt.
 

Anhänge

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
4.507
695
Berlin
Nachdem ich ja letzte Woche bei https://com-ins-netz.de war, habe ich Neuigkeiten.

Ich habe es noch nicht selbst getestet, aber es hört sich vielversprechend an, daher empfehle ich hier und jetzt, die Worker Überwachung von CIN mal zu testen.
https://www.com-ins-netz.de/WorkerMonitor-fuer-JTL-WAWI

Da man das 14 Tage testen kann, besteht also kein Risiko, wenn das Tool das macht was es verspricht, dann ist das in meinen Augen ein MUST HAVE.
 

vmgmbh

Sehr aktives Mitglied
26. November 2010
1.054
12
Nachdem ich ja letzte Woche bei https://com-ins-netz.de war, habe ich Neuigkeiten.

Ich habe es noch nicht selbst getestet, aber es hört sich vielversprechend an, daher empfehle ich hier und jetzt, die Worker Überwachung von CIN mal zu testen.
https://www.com-ins-netz.de/WorkerMonitor-fuer-JTL-WAWI

Da man das 14 Tage testen kann, besteht also kein Risiko, wenn das Tool das macht was es verspricht, dann ist das in meinen Augen ein MUST HAVE.
brauchen wir alles nicht. Das Tool von dir tut es doch absolut auch.

Zudem haben wir den Worker als Dienst bereits eingerichtet. Wieso also 50 Euro ausgeben für etwas dass wir schon haben...

Ist dir der von mir beschriebene Bug bereits bekannt im vorigen Post von mir? UNd kannst du Hilfestellung leisten?
 

vmgmbh

Sehr aktives Mitglied
26. November 2010
1.054
12
Achja mir fällt gerade auf: Die Daten sind irgendwie komisch:

kuck mal:
Code:
letzter Start Shopabgleich: 25-01-2019 . 04:01:00 - Dies war vor 2 Minuten
letzter Start ebayabgleich: 25-03-2019 . 04:03:00 - Dies war vor 0 Minuten
letzter Start Amazonabgleich: 25-59-2019 . 03:59:17 - Dies war vor 4 Minuten
was ist hier zb 25-59-2019???
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.374
201
Düsseldorf
@vmgmbh
Kein Wunder ;)

Achja mir fällt gerade auf: Die Daten sind irgendwie komisch:
Die Parameter im Format-Befehl sind falsch:
SQL:
Format([dAmazonStart],'dd-mm-yyyy / hh:mm:ss')
Du hast im Datum und in der Zeit das kleingeschriebene "m" angegeben. Das kleine "m" steht für Minuten und das großgeschriebene "M" steht für Monat. Also ändere den Code mal so ab:
SQL:
Format([dAmazonStart],'dd-MM-yyyy / hh:mm:ss')
Ciao,
Mike