ministry
Goto Top

Batch-Script per Taskplaner ausführen lassen.

Hallo erst einmal.
Ich hoffe im richtigen Bereich gelandet zu sein.

Mein Problem:
Ich möchte ein Batch-Script jede Nacht ausführen lassen (Cronjob) und habe versucht das mit dem Taskplaner (unter XP) zu realisieren.

Klappt aber irgendwie nicht so ganz:
Zeitplan: Um 2:00 Uhr täglich, ab dem...
Letzte Laufzeit: Nie
Status: Vorgang konnte nicht gestartet werden.

Als Programm ist direkt die Batch-Datei angegeben.
Es wurde extra ein User "taskplaner" erstellt, da der dauerangemeldete Hauptuser kein Passwort hat.

Hier mal das Script (vllt. liegt es ja daran):
@echo off
net use X: \\Rechnername\Data

copy x:\Verzeichnis\datei c:\Verzeichnis\datei

cd c:\Verzeichnis\

pscp -i priv_key.ppk datei user@ip:./verzeichnis/datei

del datei

net use x: /DELETE
Es soll also nur eine Datei aus dem Netzwerk auf einen Linux-Server kopiert werden.

Da ich eigentlich mit Windows rein gar nichts am Hut habe, weiß ich jetzt nicht, ob mein Script das Problem ist, oder der Taskplaner, oder beides.

Wär nett, wenn mir jemand helfen könnte.

Danke!

Content-Key: 88002

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

Printed on: April 19, 2024 at 09:04 o'clock

Member: SarekHL
SarekHL May 19, 2008 at 20:10:54 (UTC)
Goto Top
Es wurde extra ein User "taskplaner" erstellt, da der dauerangemeldete Hauptuser kein Passwort hat.

Welche Rechte hat dieser Benutzer denn? Ist er Admin? Oder nur normaler Benutzer? Hat er zumindest Leserechte auf das Verzeichnis, in dem die Batchdatei liegt?
Member: Ministry
Ministry May 19, 2008 at 21:07:17 (UTC)
Goto Top
Ja hat er.
Es spielt sich im Prinzip alles unter C:\Programme\Putty\ ab.
Dort liegt pscp und auch das Batch-Script.

edit:
Wenn ich den User "taskplaner" zum test anmelde und das Script von Hand starte, dann funktioniert es auch.
Member: anraubern
anraubern May 20, 2008 at 08:09:58 (UTC)
Goto Top
Hallo erst einmal.
Ich hoffe im richtigen Bereich gelandet zu
sein.

Mein Problem:
Ich möchte ein Batch-Script jede Nacht
ausführen lassen (Cronjob) und habe
versucht das mit dem Taskplaner (unter XP) zu
realisieren.

Klappt aber irgendwie nicht so ganz:
Zeitplan: Um 2:00 Uhr täglich, ab
dem...
Letzte Laufzeit: Nie
Status: Vorgang konnte nicht gestartet
werden.

Als Programm ist direkt die Batch-Datei
angegeben.
Es wurde extra ein User
"taskplaner" erstellt, da der
dauerangemeldete Hauptuser kein Passwort
hat.

Hier mal das Script (vllt. liegt es ja
daran):
@echo off
> net use X: \\Rechnername\Data
> 
> copy x:\Verzeichnis\datei
> c:\Verzeichnis\datei
> 
> cd c:\Verzeichnis\
> 
> pscp -i priv_key.ppk datei
> user@ip:./verzeichnis/datei
> 
> del datei
> 
> net use x: /DELETE
> 
Es soll also nur eine Datei aus dem Netzwerk
auf einen Linux-Server kopiert werden.

Da ich eigentlich mit Windows rein gar
nichts am Hut habe, weiß ich jetzt
nicht, ob mein Script das Problem ist, oder
der Taskplaner, oder beides.

Wär nett, wenn mir jemand helfen
könnte.

Danke!

Hallo,
da ich es etwas schwer finde, Mausklicks zu beschreiben gib mal auf der Commandline folgendes ein:
schtasks /create /tn filecopy /tr lw:\verz\datei /sc daily /st 02:00:00 /u taskplaner /p kennwort
dabei ist:
/create = neuen Zeitplan (Cronjob) erstellen
/tn = Der Jobname
/tr = Deine Batchdatei
/sc = Ausführungsbeginn und Wiederholung (hier täglich um 2:00 Uhr)
/u = Der Benutzer der den Task ausführen soll
/p = Kennwort des Benutzers

Ob der Job dann auch geplant wurde, kannst Du Dir mit:
schtasks /query ansehen

Gruss
Andreas
Member: Ministry
Ministry May 20, 2008 at 10:52:13 (UTC)
Goto Top
Hi,
also den Befehl schtasks kennt XP scheinbar nicht.
Bekomme ich jedenfalls als Fehlermeldung, wenn ich versuche den abzusetzen.

Hab gerade nachgesehen und festgestellt, daß es nur die Home-Edition von XP ist, hat es vllt. etwas damit zu tun?
Mitglied: 60730
60730 May 20, 2008 at 10:54:46 (UTC)
Goto Top
Servus

Home-Edition von XP

kennt die wenigstens den Befehl
AT
?
Member: Ministry
Ministry May 20, 2008 at 11:16:05 (UTC)
Goto Top
Kennt er. face-smile
Wie wäre da die Syntax?
at 02:00 /EVERY [?] "C:\Programme\Putty\datei.bat"  
[?] == Mo,Di,Mi,Do,Fr,Sa,So <-- wäre das so richtig?

Danke schon Mal.

edit: Wie kann ich da einen User angeben, unter dem der Task ausgeführt wird? Hab in der Hilfe nichts dazu gefunden (at /?).
Member: anraubern
anraubern May 20, 2008 at 11:51:36 (UTC)
Goto Top
Kennt er. face-smile
Wie wäre da die Syntax?
Wesentlich einfacher - aber AT kennt nicht die Möglichkeit den Kontext zu wechseln. Er führt den Task immer als der jeweils angemeldete User aus. Du kannst es ja dennoch mal damit versuchen.
Folgende Syntax:
at 02:00 /every:Mo,Di,Mi,Do,Fr,Sa;So cmd /c "LW.\Verz\Datei"

Leider sind die Möglichkeiten die AT bietet nicht sehr unfangreich (wie Du siehst face-smile) Wichtig: AT startet nicht automatisch den Commandprozessor. Darum muss bei einer Batch-Datei das CMD expliziet mit angegeben werden.
Nur AT zeigt die geplanten Tasks dann an.

at 02:00 /EVERY [?]
> "C:\Programme\Putty\datei.bat"  
[?] == Mo,Di,Mi,Do,Fr,Sa,So <-- wäre
das so richtig?

Danke schon Mal.

edit: Wie kann ich da einen User angeben,
unter dem der Task ausgeführt wird? Hab
in der Hilfe nichts dazu gefunden (at /?).
Ich hoffe es hilft etwas weiter...

Gruss
Andreas
Member: Ministry
Ministry May 20, 2008 at 12:13:25 (UTC)
Goto Top
Dank dir. face-smile
Hab das jetzt mal so eingetragen.
Wenn der "Cron" immer unter dem angemeldeten User läuft, kann ich mir auch das net use im Script sparen... ist also eigentlich nur gut.
Läuft das Script dann eigentlich im Hintergrund ab, oder poppt mir da ein cmd-Window auf?
Dann müsste ich ja noch sowas wie exit ins Script schreiben.

edit: Vergiss die letzte Frage, hab mir die Hilfe zu cmd angeguckt. ;)
Member: Ministry
Ministry May 28, 2008 at 06:18:02 (UTC)
Goto Top
So, da bin ich mal wieder.
Rückmeldung gibt es erst heute, weil mein Rechner ne Woche in Reperatur war und ich mich auf dem Windowsrechner nicht einloggen konnte.

Leider klappt das mit dem at nicht.
So habe ich den eingegeben:
at 02:00 /every:Mo,Di,Mi,Do,Fr,Sa,So cmd /c "C:\Programme\Putty\datei.bat"  
Wenn ich nur at aufrufe, wird mir das auch (scheinbar) richtig angezeigt.
Aber ausgeführt wird der Befehl trotzdem nicht.

Manuell ausgeführt funktioniert zumindest die Batch-Datei, sollte also nicht daran liegen.

Hat noch jemand ne Idee, was da falsch läuft?

edit: Liegt es vllt. Daran, dass der Taskplaner unter "Lokales Systemkonto" ausgeführt wird, und diesem die Rechte fehlen?
Ich habe mal versucht den Taskplaner auf das aktuelle Benutzerkonto umzustellen, geht aber nicht. Da startet der Dienst nicht mehr (Hängt von einem anderen Dienst ab, und so geht das nicht).