Neu Worker überwachung?

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
ich schreibe mir nach der ganzen diskussion jedenfalls ne batch, die mir eine email schickt, wenn der letzte abgleich älter ist, als der eingestellte intervall (+/- x min).. bei mir im test aktuell 6 min.

nur das if else in meiner batch macht mich noch nicht glücklich...

aber mit folgendem query kann ich zumindest schon mal einiges erreichen:

sqlcmd -S "PC\JTLWAWI" -U sa -P sa04jT14 -d eazybusiness -h -1 -q "exit(set nocount on; Select dShopEnde FROM dbo.tWorkerInfo WHERE DATEDIFF(mi, dShopEnde, GETDATE())>6)" -o worker-shopcheck-result.txt

@set /p "LastShopCheck="<"worker-shopcheck-result.txt"

und dann schauen, ob LastShopCheck einen String enthält bzw keinen

wenn ein datum in der datei landet...verschickt die batch automatisch ne mail.
gibt es kein ergebnis aus dem query, ist die datei leer und nix passiert...
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Ich hab es im grunde fertig, incl. mailversand.
Ich möchte nur das ich es auch ohne mailanhang hinbekomme.

Ich poste das spätestens Morgen früh, dann können bash profis das verfeinern.

Ich prüfe jeden einzelnen Abgleich, ob dieser jeweils nach einer konfigurierten Zeit, noch nicht angelaufen ist, trifft eine der Abgleichsverzögerungen zu, geht eine Mail raus.

Alles ist relativ einfach mit eigenen Daten zu füllen. Ich möchte es nur nicht halbfertig posten.
 
  • Gefällt mir
Reaktionen: fav-hosting.online

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
So......
ich habe das nun fertig geschrieben, leider sind meine Batch Script Kenntnisse nicht so das ich das mal schnell aus dem ff schreibe, ich weiß auch beim besten willen nicht wie ich eine Textdatei mit Umbrüchen in einen Mailbody bekomme.

aber es wird sich hier bestimmt jemand finden, der anhand dieser Vorlage verfeinert und optimiert.

Damit das System Emails aus der Shell schreiben kann, benötigt Ihr das Programm blat.exe, jedenfalls habe ich das dafür verwendet.
https://sourceforge.net/projects/blat/files/


PHP:
@echo off
cls
::    Dieses Script schaut nach, wie lange es her ist, dass der Worker einen Abgleich 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=JTLWAWI
set DATABASE=eazybusiness
set PASSWD=sa04jT14
set USER=sa

:: der Pfad in dem Ihr alles laufen lasst
set SAVEPATH=d:\ServerTools\

:: Der Pfad, wo Ihr blat.exe abgelegt habt
set BlatPath=d:\ServerTools\blat\blat.exe

:: eure smtp Daten um eine mail zu senden
set emailTo=xx@domain.de
set emailFrom=xx@domain.de
set emailSubject=Dein Worker mal wieder
set emailSmtp=domain.de
set emailUser=xx@domain.de
set emailPass=myPass
set emailBody=Dein Worker stresst gerade ein wenig, schau mal was da los ist.


:: 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, eine "0" überspringt dann die Prüfung dieser Plattform
set maxMinsShop=10
set maxMinsEbay=10
set maxMinsAmazon=10


:: Diese Daten brauchen nicht angepasst zu werden
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% AND %maxMinsShop% ">" 0)
set whereMaxMinEbay= OR (DATEDIFF(minute,dEbayStart,getdate()) ">" %maxMinsEbay%  AND %maxMinsEbay% ">" 0 )
set whereMaxMinAmazon= OR (DATEDIFF(minute,dAmazonStart,getdate()) ">" %maxMinsAmazon%  AND %maxMinsAmazon% ">" 0 )

   
   


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%"

for /f %%i in ("%DBList%") do if %%~zi GTR 10 goto :WriteMail
goto :Deletelock
 
 
 
:WriteMail
    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%  del %LOCKFILE% /s /q
    goto :end
   
:end
    echo fertig
meine eventuell umständlichen Vorgänge optimiert.
 

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
ok, bei mir will es noch nicht laufen.. letzter abgleich "2016-11-06 15:45:37.127" .. batch um 16:35 Uhr ausgeführt...LastStart.txt ist leer.....keine email verschickt

ich werde mal checken, ob der mailversand überhaupt funktioniert.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
das du das Programm blat.exe brauchst ist ja klar oder?

wenn du das direkt in der shell aufrufst und die Parameter nicht stimmen, dann sagt dir das blat.exe das
zum testen solltest du aber alle Minuten auf 1 stellen.

es schreibt auch nur einmal eine mail, dann liegt in dem pfad die Datei errorIsSend. log die sorgt dafür das keine weitere mail gesendet wird.
wenn der Abgleich wieder OK wird diese Datei ja automatisch gekillt

bei Fragen, einfach fragen, ich habe das ja nur in meiner Umgebung probiert, ich denke aber es kann nur an den Mail Einstellungen haengen
 

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
ja klaro... das hab ich. Es scheint bei mir ein Problem mit SQL zu geben.
Zugangsdaten zur DB stimmen...

SqlCmd -U "%USER%" -P "%PASSWD%" -S "(local)\%INSTANCE%"

(local)\%INSTANCE% könnte das problem sein?
 

Anhänge

  • Zwischenablage01.jpg
    Zwischenablage01.jpg
    59,3 KB · Aufrufe: 54
Zuletzt bearbeitet:

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Das die Zugangsdaten auch individuell sind ist aber auch klar?
Da du ja der erste bist der sagt es geht nicht, würde ich bei dir auch mit Teamview nachschauen wenn du möchtest.
 

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
wenn ich -S "(local)\%INSTANCE%" anpasse, wird zumindest schon mal eine errorIsSend. log erzeugt... warum keine email kommt, werde ich gleich seperat testen

war das
:
set INSTANCE=JTLWAWI
set DATABASE=eazybusines

schon seit beginn in deinem posting? bei mir fehlte das, wie ich grad sehe... möglicherweise nen copy&paste fehler meinerseits
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Aber, dann steht in der laststart auch die info zu den einzelnen Zeiten drin oder nur das es Probleme mit dem sql gab?
Das local würde ja nach oben zum set gehören, dami es sauber ist.
 

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
der fehler lag anfangs bei mir, in meiner bat fehlte die ISNTANCE varibale.. aber nachdem ich das entdeckt habe.. funktioniert bis auf die email alles...
einträge in der LastStart werden auch erzeugt...

nun muss ich mir mal die blat.exe anschauen, warum ich mit gmail hier nicht zum erfolg komme...
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    28,1 KB · Aufrufe: 42

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Oben in den ersten zeilen habe ich geschrieben wie der aufruf in der dos shell sein muss.
Normal sollte aber eine Meldung kommen vom blat.

Ach hatte das bild nicht gesehen....
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
Achso....mist....gmail auch nicht gesehen.....

Ja klar das kann sein, gmail laesst nicht mehr jeden ran, ausserdem hast du dann die ssl ports zu bedienen.
 

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
na mal sehen... ich hab ja noch mailsend... das arbeitet problemlos mit allen hostern, die ich bisher testen konnte... auch Gmail... da brauch man ja eigentlich nur nen app-passwort....
vielleicht erreiche ich ja das ziel, wenn ich die zeile für die mail anpasse.
 

peterPan

Sehr aktives Mitglied
16. Juni 2012
577
32
Berlin
wenn ich plat.exe gegen mailsend austausche... klappt es problemlos.. auch mit Gmail.
Zu Gmail noch der Hinweis, dass hier nicht das eigene email-passwort funktioniert, sondern nur ein extra bei google angelegtes app-passwort (hier)

den Bereich:
PHP:
set BlatPath=d:\ServerTools\blat\blat.exe
gegen
PHP:
set MailsendPath=d:\ServerTools\mailsend\mailsend1.19.exe
getauscht..

und dann mailsend-zeile eingefügt:
PHP:
MailsendPath -to "%emailTo%" -from "%emailFrom%" -port 465 -ssl -v -auth -smtp "%emailSmtp%" -user "%emailUser%" -pass "%emailPass%" -sub "%emailSubject%" -M "%emailBody%" -attach "%DBList%"

also vielen dank für die Batch... nun werde ich die mal über die Aufgabenplanung laufen lassen.

Nachtrag, besonders gut gefällt mir, dass die errorIsSend. log autom. gelöscht wird, wenn der Worker wieder arbeitet.....
 
Zuletzt bearbeitet:

Baby Sweets

Aktives Mitglied
10. November 2016
19
1
Hallo zusammen,

ich stehe aktuell auch vor dem Thema, den Worker-Prozess überwachen zu müssen, da es scheinbar immer mal wieder Fälle gibt, wo Nutzer die PLZ und den Ort verwechseln und wenn ich solch einen Auftrag zu Abwicklung des Fulfillment an die Amazon FBA schicke, ploppt der Worker einen Fehler auf und der Prozess des Updatens bei eBay z.B. steht dann still. Hier hilft es leider bisher auch nicht den Worker per Dienst laufen zu lassen.

Gibt es denn auch eine Möglichkeit - unsere Wawi DB wird seitens JTL gehostet - das Batch-Script so anzupassen, dass ich auch bei externem Hosting an die DB komme und die Abfragen machen kann, um mir eine Mail schicken zu lassen?

Danke vorab und beste Grüße

Tino
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.220
1.958
Berlin
ja das würde auch gehen, es werden dann ja nur die Daten für die url/Ip geändert.

das wären die: "(local)\%INSTANCE%"

da muss dann das stehen was du ja in deiner Wawi als url zu stehen hast.