ogli1601
Goto Top

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

Content-Key: 53695

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: gi-networx
gi-networx Mar 09, 2007 at 18:03:56 (UTC)
Goto Top
Hi,

besorg dir mal von http://assarbad.net/de/stuff die localsystem.rar

damit kannst du eine Shell mit Systemrechten aufmachen.

Gruß

Michl
Member: ogli1601
ogli1601 Mar 12, 2007 at 08:28:21 (UTC)
Goto Top
Vielen Dank, ich probiere es und melde 'bool b_erfolg' zurueck
Member: ogli1601
ogli1601 Mar 12, 2007 at 08:53:12 (UTC)
Goto Top
b_erfolg := false;

geht leider auch nicht, der befehl wird zwar gestartet un ein anschliessendes exit in der batch beendet zwar das cmd[SYSTEM] wieder, die Datei kommt aber nicht an. Er scheint den Zielpfad (den im Netz) nicht zu finden / zu kennen...
Member: gi-networx
gi-networx Mar 12, 2007 at 09:21:01 (UTC)
Goto Top
Hi,

hast Du mal versucht den Pfad auf einen Laufwerksbuchstaben zu mappen und die Datei dann gezielt nach X:\ zu kopieren?

Gruß

Michl
Member: ogli1601
ogli1601 Mar 12, 2007 at 09:32:03 (UTC)
Goto Top
ich weiss nicht was Du mit "mappen" meinst, aber ich habe ein Netzlaufwerk auf den entsprechennden Ordner eingerichtet und es darüber probiert (war der erste Ansatz). Geht aber auch nicht.

Das Problem ist einfach, das SYSTEM den Netzwerkpfad nicht erkennt.
Runas adminitrator geht leider auch nicht, da hierfür eine Passwortabfrage/eingabe nötig wäre.

Mir gehen die Ideen aus, hoffe, dass noch was kommt...
Member: ahe
ahe Mar 12, 2007 at 12:52:05 (UTC)
Goto Top
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)
Member: Biber
Biber Mar 13, 2007 at 19:44:07 (UTC)
Goto Top
@ogli1601

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
Member: Biber
Biber Apr 10, 2007 at 17:19:41 (UTC)
Goto Top
Moin ogli1601,

Nachfrage: wie ist denn der Stand Deines Problems? Selbst eine Lösung gefunden?
Inzwischen andere Hobbies? Wie kommen wir weiter?

Gruss
Biber
Member: ogli1601
ogli1601 Apr 11, 2007 at 11:35:23 (UTC)
Goto Top
Ich habe mich aus Zeitgründen (Projekt war terminiert) dazu entschieden den uneleganten Weg zu gehen und einen Task auf dem Server einzurichten, der das Kopieren zeitgesteuert übernimmt.

Unelegant daher, weil so eine weitere Fehlerquelle im laufenden Betrieb dazukommt (der task) und weil die Anwenderoption einen Intervall für den DB-Job einzurichten so natürlich nicht mehr sooooooo sinnvoll ist, da der Task im 30-min Intervall läuft. Also auch wenn der Anwender als Intervall eine Woche einstellt läuft das Kopieren im 30 min - Takt. Also überflüssige Serverlast erzeugt. Ist zwar zugegebener Massen nicht so wild aber ich empfinde es halt trotzdem als unsauber...

danke nochmal für die Antworten