Copy befehl in batch datei als(mit) SYSTEM(recht)
Hallo erstmal,
ich bin das erste mal hier und habe (wie könnte es anders sein) ein Problem:
Ich habe in Oracle eine JavaStoredProcedure geschrieben, die über Umwege letztlich einen Batchjob startet. Dieser letzte BatchJob hat nur eine einzige Funktion: Er soll eine Datei vom Server auf dem auch die DB liegt (logisch: Stored Procedure) eine Kopie in ein Netzlaufwerk schieben, bzw. auf einen anderen Computer im Netz.
Durch die Art des Aufrufs als SYSTEM scheint der BatchJob aber die Pfade nicht zu kennen. Habe es auch schon mit UNC Pfaden versucht:
copy \\rechnername\freigabename\dateiname \\rechnername\freigabename\dateiname.
Wenn ich den Batchjob so ausführe funktioniert er auch einwandfrei. Wenn ich den aber aus dem Programm heraus starte (als SYSTEM), dann kommt die Datei nicht am Ziel an. Der BatchJob wird auf jeden Fall ausgeführt (über pause verifiziert, der Prozess hängt dann) und enthält nur! den Copy-Befehl.
Wie kann ich als SYSTEM eine Datei über Batch kopieren?
Vielen Dank für die Hilfe im Vorraus
Marco
ich bin das erste mal hier und habe (wie könnte es anders sein) ein Problem:
Ich habe in Oracle eine JavaStoredProcedure geschrieben, die über Umwege letztlich einen Batchjob startet. Dieser letzte BatchJob hat nur eine einzige Funktion: Er soll eine Datei vom Server auf dem auch die DB liegt (logisch: Stored Procedure) eine Kopie in ein Netzlaufwerk schieben, bzw. auf einen anderen Computer im Netz.
Durch die Art des Aufrufs als SYSTEM scheint der BatchJob aber die Pfade nicht zu kennen. Habe es auch schon mit UNC Pfaden versucht:
copy \\rechnername\freigabename\dateiname \\rechnername\freigabename\dateiname.
Wenn ich den Batchjob so ausführe funktioniert er auch einwandfrei. Wenn ich den aber aus dem Programm heraus starte (als SYSTEM), dann kommt die Datei nicht am Ziel an. Der BatchJob wird auf jeden Fall ausgeführt (über pause verifiziert, der Prozess hängt dann) und enthält nur! den Copy-Befehl.
Wie kann ich als SYSTEM eine Datei über Batch kopieren?
Vielen Dank für die Hilfe im Vorraus
Marco
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53695
Url: https://administrator.de/forum/copy-befehl-in-batch-datei-alsmit-systemrecht-53695.html
Ausgedruckt am: 10.04.2025 um 01:04 Uhr
9 Kommentare
Neuester Kommentar
Hi,
besorg dir mal von http://assarbad.net/de/stuff die localsystem.rar
damit kannst du eine Shell mit Systemrechten aufmachen.
Gruß
Michl
besorg dir mal von http://assarbad.net/de/stuff die localsystem.rar
damit kannst du eine Shell mit Systemrechten aufmachen.
Gruß
Michl
Hallo,
versuch' doch 'mal das Folgende:
starte auf der Kommandozeile (DOS-Box) den folgenden Befehl:
AT hh:xx /interactive cmd.exe
für hh:xx solltest du eine Zeit in der nächsten Zukunft wählen, also in ca. zwei Minuten, bei mir gerade 13:43. Sobald der Zeitpunkt erreicht ist, sollte sich eine neue Kommandozeile öffnen. In dieser "DOS-Box" ist dann der Local System Account aktiv. Jetzt kannst Du versuchen dich mit deinem Laufwerk zu verbinden. net use z: \\rechnername\freigabename
klappt es, dann sollte z. B. ein
copy z:\dateiname c:\temp\
funktionieren.
Wenn Du wieder eine Fehlermeldung erhälst, Pfad nicht gefunden oder keine Rechte, etc., dann liegt das daran, dass der Account keinerlei Rechte hat.
Um dies jedoch zu erreichen, muß der Anonymous Rechte auf den Share bekommen (Achtung: damit öffnest du allen Usern Tür und Tor!). Dies erreicht man durch einen sog. Null Session Share. D. h. Einrichten des Share und anschließend den Account NETWORK und Domain Computers (in einer Domäne) Leserechte geben.
Einrichtung eines Null Session Share findest Du u. a. hier:
http://support.microsoft.com/kb/289655
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/ ...
...
Solltest Du keinen Null Session Share einrichten können/dürfen, so bleibt Dir wohl nix anderes übrig, als in Deinem Script einen Account mit Passwort mitzugeben, der die Rechte hat das Laufwerk zu verbinden (mit dem Tool CPAU kann man z. B. die entsprechende Zeile verschlüsseln)...
mfg
Axel
(ach ja, mappen kommt vom Novell-Befehl MAP, wurde/wird dazu verwendet sich mit einem Netzlaufwerk zu verbinden)
versuch' doch 'mal das Folgende:
starte auf der Kommandozeile (DOS-Box) den folgenden Befehl:
AT hh:xx /interactive cmd.exe
für hh:xx solltest du eine Zeit in der nächsten Zukunft wählen, also in ca. zwei Minuten, bei mir gerade 13:43. Sobald der Zeitpunkt erreicht ist, sollte sich eine neue Kommandozeile öffnen. In dieser "DOS-Box" ist dann der Local System Account aktiv. Jetzt kannst Du versuchen dich mit deinem Laufwerk zu verbinden. net use z: \\rechnername\freigabename
klappt es, dann sollte z. B. ein
copy z:\dateiname c:\temp\
funktionieren.
Wenn Du wieder eine Fehlermeldung erhälst, Pfad nicht gefunden oder keine Rechte, etc., dann liegt das daran, dass der Account keinerlei Rechte hat.
Um dies jedoch zu erreichen, muß der Anonymous Rechte auf den Share bekommen (Achtung: damit öffnest du allen Usern Tür und Tor!). Dies erreicht man durch einen sog. Null Session Share. D. h. Einrichten des Share und anschließend den Account NETWORK und Domain Computers (in einer Domäne) Leserechte geben.
Einrichtung eines Null Session Share findest Du u. a. hier:
http://support.microsoft.com/kb/289655
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/ ...
...
Solltest Du keinen Null Session Share einrichten können/dürfen, so bleibt Dir wohl nix anderes übrig, als in Deinem Script einen Account mit Passwort mitzugeben, der die Rechte hat das Laufwerk zu verbinden (mit dem Tool CPAU kann man z. B. die entsprechende Zeile verschlüsseln)...
mfg
Axel
(ach ja, mappen kommt vom Novell-Befehl MAP, wurde/wird dazu verwendet sich mit einem Netzlaufwerk zu verbinden)
@ogli1601
Moin ogli,
Natürlich kennt SYSTEM diese Netzwerkwerkumgebung bzw. das "bereits gemapte Laufwerk X:" des Users ABC nicht.
Also muss SYSTEM genau denselben NET USE-Befehl nochmal ausführen, den vorher auch User ABC abgeschickt hat.
Wenn SYSTEM aber die Rechte dazu hat, sollte das kein Problem sein.
der erste sinnvolle Befehl in dem aufgerufenen Batch sollte als ein "NET USE x: \\bla\blubb" sein.
Scheitert das? Wenn ja mit welcher Fehlermeldung?
Gruss
Biber
Moin ogli,
Das Problem ist einfach, das SYSTEM den Netzwerkpfad nicht erkennt.
Ich bin nicht sicher, ob Du vorangeposteten Lösungen so richtig verstanden hast...Natürlich kennt SYSTEM diese Netzwerkwerkumgebung bzw. das "bereits gemapte Laufwerk X:" des Users ABC nicht.
Also muss SYSTEM genau denselben NET USE-Befehl nochmal ausführen, den vorher auch User ABC abgeschickt hat.
Wenn SYSTEM aber die Rechte dazu hat, sollte das kein Problem sein.
der erste sinnvolle Befehl in dem aufgerufenen Batch sollte als ein "NET USE x: \\bla\blubb" sein.
Scheitert das? Wenn ja mit welcher Fehlermeldung?
Gruss
Biber