tallerbiskus
Goto Top

Aufgabenplaner führt Programm inkorrekt aus

Hallo Leute face-smile

Ich habe ein sehr seltsames Phänomen.

Folgende Gegebenheiten :
Wir haben einen Windows Server 2012 R2 Standard.
Es gibt 2 Programme die ich selbst geschrieben habe.
Beide funktionieren und erfüllen ihren Zweck.

Eines ist etwas Komplexer und bereitet für die Homepage einige Bilder, Beschreibung sowie Teilelisten vor.
Das andere Programm dient nur zum Upload auf einen FTP Server und sendet bei Erfolg eine Email an den
zuständigen Mitarbeiter.

Beide zusammengefasst in einer CMD Datei und im Aufgabenplaner eingestellt.

Nun das Problem face-sad
Der Aufgabenplaner startet die CMD korrekt. Diese führt auch das erste Programm korrekt aus
Nach Ende des ersten Programms wird auch das zweite angestartet. Jedoch bekomme ich die Meldung,
daß der FTP Server nicht erreichbar sei. Dementsprechend geht es nicht weiter.

Starte ich diese CMD einzeln oder führe ich diese aus dem Aufgabenplaner aus, funktioniert diese Tadellos.

Einstellungen des Taskplaner :
Ausführen mit höchsten Berechtigungen ist aktiv
Nur ausführen wenn Benutzer angemeldet ist auch aktiv (Der Benutzer Admin ist immer angemeldet)

Wie gesagt, der Task startet an, beide Programme werden der Reihe nach gestartet, nur die Meldung mit dem
nicht erreichbaren FTP ist mir ein Rätsel.

Ich habe schon die CMD auf verschiedene Weisen geändert und auch die Startzeit geändert.
Auch das Uploadprogramm einzeln in der Aufgabenplanung bringt nicht den Erfolg.

Hat jemand von euch eine Idee ?

LG
Bisk

Content-ID: 551775

Url: https://administrator.de/contentid/551775

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

Bitboy
Bitboy 26.02.2020 um 09:24:52 Uhr
Goto Top
Moin,

wie hast du denn den FTP Zugriff realisiert?

Grüße
TallerBiskus
TallerBiskus 26.02.2020 um 09:47:19 Uhr
Goto Top
Über ein entsprechendes Steuerelement.
Parameter (Server, User und Passwort) als feste Eingabe in den Textfeldern.
Es wird also nichts aus einer ini oder sonstiges ausgelesen.

Dateien aus dem Verzeichnis werden in eine Listbox geladen und diese dann innerhalb einer
Schleife einzeln hochgeladen.

Wie gesagt...das funktioniert ja.

LG
Bisk
Bitboy
Bitboy 26.02.2020 um 09:53:25 Uhr
Goto Top
Welche Textfelder? Ich meinte eher welches Programm zu für den FTP Zugriff verwendest und wie du es im Task / cmd startest.

Nächster Vorschlag. Mach 2 Tasks (wenn das ja funktioniert) und lass am Ende von Task 1 den Task 2 starten
SCHTASKS.EXE /RUN /TN "task name"
Pardue3
Pardue3 26.02.2020 um 09:59:36 Uhr
Goto Top
Die Aufgabe soll unter einem Admin-Konto ausgeführt werden, das eingegebene Kennwort ist korrekt und wird auch akzeptiert MyLowesLife.
emeriks
emeriks 26.02.2020 aktualisiert um 10:09:18 Uhr
Goto Top
Hi,
wenn Du diese Programme selbst geschrieben hast, dann kannst Du doch auch weiterführende Diagnosen einbauen.
Wenn im Programm der Fehler mit dem FTP-Server kommt, dann lass eine Prüfung der Umgebungsbedingungen ausführen. Ob die Umgebung so ist, wie Du es erwartest.

Dateien aus dem Verzeichnis werden in eine Listbox geladen und diese dann innerhalb einer Schleife einzeln hochgeladen.
Könnte es sein, dass der Fehler hier liegt? Und dass die Fehlermeldung aus dem Programm heraus einfach nur falsch ist? Dass Du da etwas nicht berücksichtigt hast?
Ich programmiere selbst und weiß, wovon ich spreche. Ich habe mich schon zu oft auf diese Weise selbst "ausgetrickst" ... ;.)

E.
TallerBiskus
TallerBiskus 26.02.2020 um 10:10:00 Uhr
Goto Top
Das Programm für den Upload habe ich selbst geschrieben.

In dem entsprechenden Formular sind die Zugangsdaten in Textfeldern hinterlegt.
Diese mit Passwortzeichen versehen sodass sie nicht ausgelesen werden können.

Das Programm startet mit Parameter (-start). Nur wenn dieser Parameter eingegeben ist,
wird auch nur das dafür zuständige Formular geladen in dem das FTP Control und die Textfelder sind
und ausgeführt.
Dieses Programm hat noch andere Funktionen auf die Benutzer zugreifen können. Diese müssen
sich mit Name und Passwort anmelden, haben aber auf das Formular mit FTP Zugriff keinen Zugang.

In der CMD Datei setze ich den Pfad mit "set path=......" und rufe dann das Programm mit "upload.exe -start" auf

Meine CMD ist so aufgebaut :

bilderzuserver.cmd

set path=...Programm was Daten aufbereitet und in Ordner schiebt..........
teile.exe -inetdaten

set path=..dieses lädt bilder und Listen über FTP auf Internetserver....
upload.exe -start


Wenn ich den ersten Teil, also das erste Programm weglasse ist der Fehler noch vorhanden.
Obwohl die Daten im Ordner bereit stehen.


Aber in Anlehnung deines Vorschlages habe ich eine Idee die ich noch versuchen werde.

LG
Bisk
TallerBiskus
TallerBiskus 26.02.2020 um 10:12:17 Uhr
Goto Top
Ja, was Du meinst mit selber austricksen kenne ich face-smile
Manchmal ist man Blind für eigene Fehler.

Im Einzelschrittmodus funktioniert alles.
Auch wenn ich die Programme manuel starte....auch die CMD (Batch) funktioniert....
Nur eben nicht aus dem Aufgabenplaner heraus face-sad
TallerBiskus
TallerBiskus 26.02.2020 um 10:12:59 Uhr
Goto Top
Ja...
alles anderern Aufgaben laufen auch.
emeriks
emeriks 26.02.2020 aktualisiert um 10:15:44 Uhr
Goto Top
Zitat von @TallerBiskus:
Im Einzelschrittmodus funktioniert alles.
Und wieder ausgetrickst.
Der Einzelschrittmodus läuft doch nicht, wenn als Scheduled Task ausgeführt, sondern nur, wenn du interaktiv debugst.
Du denkst nur, alles sei gleich. Erfasse es empirisch, ohne Denken!
Bitboy
Bitboy 26.02.2020 um 10:15:38 Uhr
Goto Top
Was mich verwundert sind die Begriffe Textbox, Listview und geplanter Task.
Geplante Tasks haben noch nie ordentlich mit GUI Elementen funktioniert...
emeriks
emeriks 26.02.2020 aktualisiert um 10:16:44 Uhr
Goto Top
Zitat von @Bitboy:
Geplante Tasks haben noch nie ordentlich mit GUI Elementen funktioniert...
Doch, warum nicht? Er lässt es doch ausführen "nur wenn Benutzer angemeldet".
TallerBiskus
TallerBiskus 26.02.2020 um 10:19:04 Uhr
Goto Top
Soooo...... face-smile
Happy.....

Dank diverser Anregungen bin ich auf 2 Dinge gestossen..........

Im Aufgabenplaner stand im Punkt "Konfigurieren für "...... Windows Vista drin....
Ich habe es geändert auf Server 2012.


Meine CMD habe ich geändert.....

Anstatt die Programme mit namen aufzurufen, starte ich diese einzeln über eine jeweilige CMD Datei
und rufe diese dann mit Call in meiner übergeordneten CMD auf........

Bisher scheint es jetzt zu gehen... er lädt grade noch hoch....
vorher hat er nichteinmal begonnen....

face-smile
TallerBiskus
TallerBiskus 26.02.2020 um 10:23:58 Uhr
Goto Top
Updateinfo......

Habe soeben Email samt Protokoll bekommen das alles funktioniert..... face-smile face-smile

Nochmal Danke für eure Unterstützung.

Manchmal reicht ein kleiner Denkanstoss face-smile

LG
Bisk
Bitboy
Bitboy 26.02.2020 um 10:24:56 Uhr
Goto Top
Erfahrungswert. Ich habs noch nicht in funktionierend gesehen.
Die Konstruktion hat auch zu viele Stolpersteine. Angemeldet sein ist eine Sache. Aber wenn der Bildschirm gesperrt ist fällts meistens schon auf die Nase. Als nächstes ist die Frage ob den auch mit den Steuerelementen interagiert werden muss...

Was (System-)Dienste und Geplante Tasks angeht immer keine GUI, non interactive. Dann klappts auch meistens.
143127
143127 26.02.2020 aktualisiert um 10:30:05 Uhr
Goto Top
In der CMD Datei setze ich den Pfad mit "set path=......" und rufe dann das Programm mit "upload.exe -start" auf
Womit du alle anderen Pfade aus der "Path" Variablen rauswirfst. Da wundert es mich ehrlich gesagt nicht das es zu Problemen kommt wenn ein Programm auf die vorher vorhandenen Einträge in der Umgebungsvariablen angewiesen ist.
Statt die User-Path Variable "komplett zu überschreiben" gebe den kompletten Pfad zum Programm direkt an oder "ergänze" zumindest deine Path Variable, das Überschreiben dieser besonderen Umgebungsvariable ist keine gute Idee und eine zu vermeidende Fehlerquelle!

Das nennt man dann "Phänomen" hausgemacht face-smile...
TallerBiskus
TallerBiskus 26.02.2020 um 10:32:20 Uhr
Goto Top
Beide Programme arbeiten selbstständig und unabhängig voneinender. Mit path setze ich ja nur das Arbeitsverzeichnis weil eben dort noch Dateien sind die das jeweilige Programm benötigt.

Die Aufbereitung und das Upload arbeiten unabhängig voneineder.

Wie gesagt ...... die Aufgabe lief ja immer an.
Und wenn ich aus der Aufgabenplanung heraus gestartet habe lief sie auch.
Nur wenn es per normaler Zeit gestartet wurde, kam mein Upload mit der Fehlermeldung FTP
Server nicht gefunden.

Jetzt nach meinen Änderungen scheint es zu funktioniern. Lag offensichtlich an der falschen Konfiguration
der Aufgabe

LG
Bisk
143127
143127 26.02.2020 aktualisiert um 10:37:52 Uhr
Goto Top
Zitat von @TallerBiskus:

Mit path setze ich ja nur das Arbeitsverzeichnis weil eben dort noch Dateien sind die das jeweilige Programm benötigt.
Nein tust du nicht nur, die "Path" Variable ist besonders und mit deinem Befehl wirfst du alle anderen Pfade die dort vorher drin standen raus und somit auch eventuell benötigte Pfade für andere Anwendungen, die finden dann Ihrerseits ihre Programmteile dann nicht mehr und laufen in Fehler.
TallerBiskus
TallerBiskus 26.02.2020 um 10:37:37 Uhr
Goto Top
set path=z:\eigenentwicklung\teile
call z:\eigenentwicklung\teile\inetdaten.cmd

set path=z:\eigenentwicklung\internet\
call z:\eigenentwicklung\internet\bilderladen.cmd


so ist jetzt meine CMD
143127
143127 26.02.2020 aktualisiert um 10:44:02 Uhr
Goto Top
Zitat von @TallerBiskus:

set path=z:\eigenentwicklung\teile
call z:\eigenentwicklung\teile\inetdaten.cmd

set path=z:\eigenentwicklung\internet\
call z:\eigenentwicklung\internet\bilderladen.cmd


so ist jetzt meine CMD
Path Variable "überschreiben" ist wie gesagt schlecht, besser so
cd "z:\eigenentwicklung\teile"  
call inetdaten.cmd 
cd "z:\eigenentwicklung\internet"  
call bilderladen.cmd
Die eigene Anwendung dann nicht von der Path Variablen abhängig machen sondern einfach die weiteren benötigten Teile vom Assembly -Pfad abhängig machen.
TallerBiskus
TallerBiskus 26.02.2020 um 10:44:09 Uhr
Goto Top
Danke face-smile

Mit cd hätte ich auch selber drauf kommen müssen face-smile
Habe es eban mal geändert und werde sehen was heute Abend passiert....

Doch wie gesagt ... es lief ja eben richtig und ich vermute es lag an der Einstellung im Aufgabenplaner.

Nochmals Danke an alle face-smile
143127
143127 26.02.2020 aktualisiert um 11:13:16 Uhr
Goto Top
Doch wie gesagt ... es lief ja eben richtig
Bringt gar nichts wenn du uns und dir das 100 mal hier hin schreibst, wer weiß was da sonst noch für Fallen in deinem Code lauern die hier keiner sieht. Beherzige und berücksichtige "alle" Tipps dann wird vielleicht ein Schuh draus...

Schon das ganze "Nur bei Anmeldung ausführen" Gedöns ist Schmuh hoch drei. Programmiere das so das eine Anmeldung nicht nötig ist, und Anmeldedaten hinterlegt man auch nicht in Textfeldern sondern im Windows-Tresor oder verschlüsselt wenn's denn sein muss.
SachsenHessi
SachsenHessi 26.02.2020 um 11:05:51 Uhr
Goto Top
Hallo,

wenn Du über TaskPlaner arbeiten möchtest, dann verzichte auf GUI.
Lege die Einstellungen entweder als INI/XML-Dateien ab (serialisierung ist hier richtig hilfreich).
(Evtl. kannst Du auch die Einstellungen in der Registry unterbringen.)
Auf alle Fälle solltest Du versuchen das unabhängig von einer Nutzeranmeldung zu halten. Also "GUI-frei".

Gruß
Frank
TallerBiskus
TallerBiskus 27.02.2020 aktualisiert um 16:32:26 Uhr
Goto Top
Hallo face-smile

@143127


Hatte es gestern ja noch so geändert wie Du es vorgeschlagen hast mit cd.....
Wollte nur bescheid geben das alles so nun funktioniert.

Ich habe mal nach dem cd den Path abgerufen .....
jetzt wird mir klar was Du meintest das alle anderen raus geschmissen werden ;)

LG
Bisk