Datei per Script übers Netzwerk Kopieren
Eine Datei per Script übers Netzwerk auf eine Adminfreigabe Kopieren
Hallo,
ich möchte gern Dateien nachdem ich sie geändert habe per Script auf einzelne Rechner im Netzwerk kopieren und verteilen.
Ich könnte zwar auf jeden rechner dann einzeln zugreifen, aber ich würde das gern per Script machen, also einrfach nur ausführen und er kopiert die Datei auf die Rechner
Nun wollte ich nicht extra auf dem jeweiligen Rechner noch eine Freigabe einrichten.
Und dachte mir ich nutze dafür einfach die Adminfreigabe c$
Die datei ist immer die gleiche die Kopiert wird, aber halt nicht regelmäßig, da diese nur verteilt werden muss wenn in der Datei was geändert wurde.
Netzwerk: 1 Win 2003 DomainController, und WinXP Pro Clients
Hallo,
ich möchte gern Dateien nachdem ich sie geändert habe per Script auf einzelne Rechner im Netzwerk kopieren und verteilen.
Ich könnte zwar auf jeden rechner dann einzeln zugreifen, aber ich würde das gern per Script machen, also einrfach nur ausführen und er kopiert die Datei auf die Rechner
Nun wollte ich nicht extra auf dem jeweiligen Rechner noch eine Freigabe einrichten.
Und dachte mir ich nutze dafür einfach die Adminfreigabe c$
Die datei ist immer die gleiche die Kopiert wird, aber halt nicht regelmäßig, da diese nur verteilt werden muss wenn in der Datei was geändert wurde.
Netzwerk: 1 Win 2003 DomainController, und WinXP Pro Clients
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 93739
Url: https://administrator.de/contentid/93739
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
6 Kommentare
Neuester Kommentar
Hi,
so aus dem Bauch heraus, solltest Du Dir mal RSYNC ansehen, das macht quasi out of the Box das was Du brauchst. Vergiss den Server Client Aufbau und sieh Dir einfach nur den Befehl an sich an. Wenn Du möchtest kann ich Dir in den nächsten Tagen eine Anleitung mit dem entsprechenden Skript geben.
Vorerst würde ich das so machen:
sync.cmd======
@echo off
net use z: \\quellserver\c$\
net use y: \\zielserver\c$\
rsync -avz --progress /cygdrive/z/pfadzurdatei/dateiname /cygdrive/y/pfaddeszielordners/
RSYNC für Windows findest Du hier und die Originalquelle unter http://samba.anu.edu.au/rsync/.
Bei dem was Du machst brauchst Du die --delete Option nicht, das schreibe ich hier nur, weil man mit der vor allem bei Strukturen vorsichtig sein sollte, hab schon Leute erlebt, die sich ganze Bereiche ihrer Fileserver gelöscht haben.
Ansonsten kannst Du auch wahrscheinlich mehr aus dem Windows Berich kommend auf Robocopy zurückgreifen. Das findest Du hier.
Bye
MT
so aus dem Bauch heraus, solltest Du Dir mal RSYNC ansehen, das macht quasi out of the Box das was Du brauchst. Vergiss den Server Client Aufbau und sieh Dir einfach nur den Befehl an sich an. Wenn Du möchtest kann ich Dir in den nächsten Tagen eine Anleitung mit dem entsprechenden Skript geben.
Vorerst würde ich das so machen:
sync.cmd======
@echo off
net use z: \\quellserver\c$\
net use y: \\zielserver\c$\
rsync -avz --progress /cygdrive/z/pfadzurdatei/dateiname /cygdrive/y/pfaddeszielordners/
RSYNC für Windows findest Du hier und die Originalquelle unter http://samba.anu.edu.au/rsync/.
Bei dem was Du machst brauchst Du die --delete Option nicht, das schreibe ich hier nur, weil man mit der vor allem bei Strukturen vorsichtig sein sollte, hab schon Leute erlebt, die sich ganze Bereiche ihrer Fileserver gelöscht haben.
Ansonsten kannst Du auch wahrscheinlich mehr aus dem Windows Berich kommend auf Robocopy zurückgreifen. Das findest Du hier.
Bye
MT
Was genau ist die Frage?
Dateien auf die Adminfreigabe kopieren ist einfach, wenn man Adminrechte hat:
copy DATEI \\PCNAME\c$\PFAD
Dann solltest Du eine Liste der PC-Namen haben.
Oder falls Du wissen willst, wie man die erhält, hier ein kleines Beispiel in VBS:
Dateien auf die Adminfreigabe kopieren ist einfach, wenn man Adminrechte hat:
copy DATEI \\PCNAME\c$\PFAD
Dann solltest Du eine Liste der PC-Namen haben.
Oder falls Du wissen willst, wie man die erhält, hier ein kleines Beispiel in VBS:
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
Set root = GetObject("LDAP://rootDSE")
objCommand.CommandText = "<LDAP://" & root.get("DefaultNamingContext") & ">;(objectCategory=computer);distinguishedName,name,operatingsystem;subtree"
objCommand.Properties("Sort On") = "name"
Set objRecordSet = objCommand.Execute
While Not objRecordSet.EOF
wscript.echo objRecordSet.Fields("name") & " - " & objRecordSet.Fields("operatingsystem")
objRecordSet.MoveNext
Wend
Ok, ich habe mir nochmals die Mühe gemacht und das hier geschraubt und auch getestet:
sync.cmd=======
@echo off
net use z: /delete
net use y: /delete
net use z: \\QUELLE\C$\VERZEICHNIS\
FOR %%a IN (ZIEL1 ZIEL2) DO call :rscopy %%a
goto :EOF
:rscopy
REM %%a ist jetzt durch call in %1
net use y: \\%1\SHARE\
c:\Anwendungen\cwrsync\bin\rsync -avz --progress /cygdrive/z/datei.pdf /cygdrive/y/
net use y: /delete
goto :EOF
Den Pfad zum rsync kannst Du Dir natürlich sparen wenn er in dem Umgebungsvariablen steht.
sync.cmd=======
@echo off
net use z: /delete
net use y: /delete
net use z: \\QUELLE\C$\VERZEICHNIS\
FOR %%a IN (ZIEL1 ZIEL2) DO call :rscopy %%a
goto :EOF
:rscopy
REM %%a ist jetzt durch call in %1
net use y: \\%1\SHARE\
c:\Anwendungen\cwrsync\bin\rsync -avz --progress /cygdrive/z/datei.pdf /cygdrive/y/
net use y: /delete
goto :EOF
Den Pfad zum rsync kannst Du Dir natürlich sparen wenn er in dem Umgebungsvariablen steht.
Ich möchte diese Aufgabenstellung nochmal auffrischen und hoffe Ihr könnt mir zeitnah helfen,
Aufgabenstellung in meinem Fall:
Eine Datei auf mehrere Server kopieren und remote ausführen.
Ich habe eine Liste.txt mit Servern im Netzwerk:
SRV-1
SRV-2
SRV-3
usw.
Weiterhin habe ich eine Datei (Analyse.exe).
Die Datei Analyse.exe soll jeweils auf die Server (aus der Liste) auf die administrative Freigabe C$ kopiert und auf dem Server selber ausgeführt werden.
Ausführen müsste ja per PsExec (war es Sysinternals??) oder mit einem anderen Tool gehen.
Die Lösung wird wohl ein Mix aus mir noch unverständlichen FOR-Schleifen sein aber genau da hängt es halt, es ist das Gesamte was ich nicht zusammen bekomme.....
Kann mir bitte mal jemand einen Lösungsansatz (In a Nutshell) posten?
LG Soidberg
Aufgabenstellung in meinem Fall:
Eine Datei auf mehrere Server kopieren und remote ausführen.
Ich habe eine Liste.txt mit Servern im Netzwerk:
SRV-1
SRV-2
SRV-3
usw.
Weiterhin habe ich eine Datei (Analyse.exe).
Die Datei Analyse.exe soll jeweils auf die Server (aus der Liste) auf die administrative Freigabe C$ kopiert und auf dem Server selber ausgeführt werden.
Ausführen müsste ja per PsExec (war es Sysinternals??) oder mit einem anderen Tool gehen.
Die Lösung wird wohl ein Mix aus mir noch unverständlichen FOR-Schleifen sein aber genau da hängt es halt, es ist das Gesamte was ich nicht zusammen bekomme.....
Kann mir bitte mal jemand einen Lösungsansatz (In a Nutshell) posten?
LG Soidberg
Zwischenzeitlich habe ich mich mit Psexec auseinandergesetzt, damit scheint es recht einfach zu sein Dateien zu kopieren und auszuführen.
@mom habe ich folgende Befehlszeile:
psexec @liste.txt -u f-USERNAME -p PASSWORT -n 300 -c -f C:\Analyse.exe -w C:\
Leider klappt es nicht, ich scheine etwas falsch zu machen, ich erhalte die Nachricht Zugriff verweigert. Dabei habe ich doch extra meinen f-account ausgegraben *schmunzel*...
*Da die Liste der Server unsere kompletten Forest enthält und somit sehr viele Server anzufassen sind, sollte die Lösung so funktionstüchtig, einfach und zuverlässig sein.
Ich denke mit dem Tool sollte es gehen wenn man es zum laufen bekommt.... hat jemand Ideen dazu?
EDIT:
Ich habe umgedacht. Anstatt die .exe auf alle Server zu kopieren habe ich eine Freigabe erstellt und dort die .exe abgelegt.
Dann habe ich mir folgendes gebastelt:
psexec @liste.txt -u DOMÄNE\ACCOUNTNAME-p PASSWORT "\\SERVER\FREIGABENAME\Analyse.exe"
Die Liste dazu ist ganz normal aufgebaut:
SRV-1
SRV-2
SRV-3
usw.
LG Soidberg
@mom habe ich folgende Befehlszeile:
psexec @liste.txt -u f-USERNAME -p PASSWORT -n 300 -c -f C:\Analyse.exe -w C:\
Leider klappt es nicht, ich scheine etwas falsch zu machen, ich erhalte die Nachricht Zugriff verweigert. Dabei habe ich doch extra meinen f-account ausgegraben *schmunzel*...
*Da die Liste der Server unsere kompletten Forest enthält und somit sehr viele Server anzufassen sind, sollte die Lösung so funktionstüchtig, einfach und zuverlässig sein.
Ich denke mit dem Tool sollte es gehen wenn man es zum laufen bekommt.... hat jemand Ideen dazu?
EDIT:
Ich habe umgedacht. Anstatt die .exe auf alle Server zu kopieren habe ich eine Freigabe erstellt und dort die .exe abgelegt.
Dann habe ich mir folgendes gebastelt:
psexec @liste.txt -u DOMÄNE\ACCOUNTNAME-p PASSWORT "\\SERVER\FREIGABENAME\Analyse.exe"
Die Liste dazu ist ganz normal aufgebaut:
SRV-1
SRV-2
SRV-3
usw.
LG Soidberg