Software an Rechner in IP range verteilen per batch
Hallo zusammen,
ich benötige eure Hilfe bei einem Batch Skript. Das ganze ist als einfache "kopier" Aufgabe gestartet und nimmt jetzt immer wildere Ausmaße an.
Im Endeffekt soll ein kleines Tool auf eine Gruppe von Rechner im Netzwerk verteilt werden.
Die Hostnamen bzw. die IP´s sind nicht bekannt bzw. bekommen die Rechner ihre IP per DHCP und da nicht immer alle Rechner online sind, müsste erst geprüft werden ob der jeweilige Rechner auch am Netz hängt .
Mein gedachter Ablauf sollte wie folgt aussehen:
-prüfen ob rechner im Netz hängen
-hängt rechner im Netz soll geprüft werden ob bestimmtes Verzeichnis vorhanden
-ist bestimmtes Verzeichnis vorhanden = exit
-Verzeichnis nicht vorhanden = kopiere Verzeichnis von share
Dazu kommt das ich eigentlich gar keine Ahnung von der Materie habe, habe mich jetzt einige Zeit damit beschäftigt und einige Lösungsansatze gefunden, allerdings weiß ich diese Ansätze nicht mit einander zu kombinieren.
mit der folgenen Schleife habe ich es geschafft das Netz zu scannen
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i
kann ich hier mit error Leveln arbeiten ? Sprich:
if error 0 goto copy
:copy
if not exist "c:\programme\Verzeichnis" DO net use x: \\192.168.0.2\balabal\Verzeichnis
copy x:\192.168.0.2\balabal\Verzeichnis c:\programme\
und wie schaffe ich es das er dies auf jede gefundene IP in diesem range ausführt.
Das wäre der erste wichtig Punkt für mich, läßt sich das so bzw. so ähnlich realisieren ?
Richtig nett wäre noch eine zusätzliche Funktion. Wenn man das Skript startet soll ein prompt erscheinen in dem man den IP Bereich bzw. die start und end ip eingeben kann.
Etwa so :
@echo off
SET /p sub=IP-Bereich eingeben: 195.190
SET /p a=Start-IP eingeben: 195.190%sub%.
SET /p b=End-IP eingeben: 195.190%sub%.
ECHO Pinge IPs von 195.190%sub%.%a% bis 195.190%sub%.%b%
FOR /L %%i IN (%%a 1 %%b) DO ping -n 1 195.190%sub%.%%i
funzt aber auch nich so richtig. ist aber auch nur ein netter zusatz, wichtig wäre der erste teil.
Komme einfach nicht weiter, google und board suche haben mir auch nicht wirklich geholfen, daraus habe ich meine Ansätze bekommen, die es halt noch zu korrigieren bzw. kombinieren gilt.
Bin für jede Hilfe dankbar !!!
ich benötige eure Hilfe bei einem Batch Skript. Das ganze ist als einfache "kopier" Aufgabe gestartet und nimmt jetzt immer wildere Ausmaße an.
Im Endeffekt soll ein kleines Tool auf eine Gruppe von Rechner im Netzwerk verteilt werden.
Die Hostnamen bzw. die IP´s sind nicht bekannt bzw. bekommen die Rechner ihre IP per DHCP und da nicht immer alle Rechner online sind, müsste erst geprüft werden ob der jeweilige Rechner auch am Netz hängt .
Mein gedachter Ablauf sollte wie folgt aussehen:
-prüfen ob rechner im Netz hängen
-hängt rechner im Netz soll geprüft werden ob bestimmtes Verzeichnis vorhanden
-ist bestimmtes Verzeichnis vorhanden = exit
-Verzeichnis nicht vorhanden = kopiere Verzeichnis von share
Dazu kommt das ich eigentlich gar keine Ahnung von der Materie habe, habe mich jetzt einige Zeit damit beschäftigt und einige Lösungsansatze gefunden, allerdings weiß ich diese Ansätze nicht mit einander zu kombinieren.
mit der folgenen Schleife habe ich es geschafft das Netz zu scannen
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i
kann ich hier mit error Leveln arbeiten ? Sprich:
if error 0 goto copy
:copy
if not exist "c:\programme\Verzeichnis" DO net use x: \\192.168.0.2\balabal\Verzeichnis
copy x:\192.168.0.2\balabal\Verzeichnis c:\programme\
und wie schaffe ich es das er dies auf jede gefundene IP in diesem range ausführt.
Das wäre der erste wichtig Punkt für mich, läßt sich das so bzw. so ähnlich realisieren ?
Richtig nett wäre noch eine zusätzliche Funktion. Wenn man das Skript startet soll ein prompt erscheinen in dem man den IP Bereich bzw. die start und end ip eingeben kann.
Etwa so :
@echo off
SET /p sub=IP-Bereich eingeben: 195.190
SET /p a=Start-IP eingeben: 195.190%sub%.
SET /p b=End-IP eingeben: 195.190%sub%.
ECHO Pinge IPs von 195.190%sub%.%a% bis 195.190%sub%.%b%
FOR /L %%i IN (%%a 1 %%b) DO ping -n 1 195.190%sub%.%%i
funzt aber auch nich so richtig. ist aber auch nur ein netter zusatz, wichtig wäre der erste teil.
Komme einfach nicht weiter, google und board suche haben mir auch nicht wirklich geholfen, daraus habe ich meine Ansätze bekommen, die es halt noch zu korrigieren bzw. kombinieren gilt.
Bin für jede Hilfe dankbar !!!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134016
Url: https://administrator.de/contentid/134016
Ausgedruckt am: 23.11.2024 um 09:11 Uhr
15 Kommentare
Neuester Kommentar
@ECHO OFF
set /P subnetz=Bitte geben Sie ein Subnetz ein:
set /P ipstart=Bitte geben Sie die Start-IP ein:
set /P ipende=Bitte geben Sie die End-IP ein:
@echo.
@echo Angegebenes Subnetz: %subnetz%
@echo.
FOR /L %%i IN (%ipstart%,1,%ipende%) DO @ping -n 1 %subnetz%.%%i|find /i "Antwort" >nul && (
@echo %subnetz%.%%i online, kopiere..
@xcopy /E /T \\192.168.0.2\balabal\Verzeichnis \\%subnetz%.%%i\c$\programme\Verzeichnis\
) || (
@echo %subnetz%.%%i offline
)
Mal ungetestet kannst du es mal damit versuchen:
Den genauen copy must du mal selbst rausfinden
@echo off
SET /p sub=IP-Bereich eingeben: 195.190.
SET /p a=Start-IP eingeben: 195.190.%sub%.
SET /p b=End-IP eingeben: 195.190.%sub%.
ECHO Pinge IPs von 195.190.%sub%.%a% bis 195.190.%sub%.%b%
FOR /L %%i IN (%a%,1,%b%) DO ping -n 1 195.190.%sub%.%%i>NUL && goto:copy %%i
goto:eof
:copy
set IP=195.190.%sub%.%1
echo erreichbar: %IP%
if not exist "c:\programme\Verzeichnis" DO net use x: \\192.168.0.2\balabal\Verzeichnis
copy x:\192.168.0.2\balabal\Verzeichnis c:\programme\
Den genauen copy must du mal selbst rausfinden
Zitat von @Steff221:
Hallo zusammen,
Mein gedachter Ablauf sollte wie folgt aussehen:
-prüfen ob rechner im Netz hängen
-hängt rechner im Netz soll geprüft werden ob bestimmtes Verzeichnis vorhanden
-ist bestimmtes Verzeichnis vorhanden = exit
-Verzeichnis nicht vorhanden = kopiere Verzeichnis von share
Hallo zusammen,
Mein gedachter Ablauf sollte wie folgt aussehen:
-prüfen ob rechner im Netz hängen
-hängt rechner im Netz soll geprüft werden ob bestimmtes Verzeichnis vorhanden
-ist bestimmtes Verzeichnis vorhanden = exit
-Verzeichnis nicht vorhanden = kopiere Verzeichnis von share
Im Prinzip fehlt dir doch als nachfolger vom 3. Schritt -> Wenn vorhanden - trage den Zustand in ein Logfile ein - bzw trage den Rechner aus der Liste - der noch zu verteilenden aus.
Da das ganze aber ein arg krummer Weg ist - empfehle ich dir - lass es.
Sinnvoller ist das nutzen der Computerstartupscripte - denn dann werden die Rechner schon beim hochfahren - vorm anmelden des users mit dem Ordner beschickt und nicht erst dann, wenn du deine Batch losläßt.
Ps: Immer wieder gerne genommen - bei deinem Weg kann es dir passieren, dass der User den rechner während des kopierens herunterfährt - ergo der Ordner zwar angelegt ist - aber evtl. nur halb gefüllt.
Gruß
Oder du siehst dir mal Inventur mit PSInfo an.
Dieses Script prüft alle Rechner in der Domäne auf Erreichbarkeit. Da fällt dann das Scannen weg.
Dieses Script prüft alle Rechner in der Domäne auf Erreichbarkeit. Da fällt dann das Scannen weg.
Servus,
nochmal der Hinweis auf die Computerstartupscripte.
Gruß
nochmal der Hinweis auf die Computerstartupscripte.
Psinfo ist wie fast alle Sysinternal Tools mit [-u Username] [-p Password] aufrufbar.
- Ein irgendeine.exe /? hilft fast immer und wenn nicht - dann irgendeine.exe --help
Gruß
Bezogen auf mein Batch oben:
speicher das Batch als CopyBalabal.cmd ab und ruf es in einer Dosbox zusammen mit dem Befehl "runas" auf. Dieser Befehl ermöglicht, eine andere Benutzerkennung beim Aufruf zu verwenden.
Du kannst das Script auch als geplanten Task ausführen lassen, was sich besonders dann anbietet, wenn es unbeaufsichtigt und/oder mehrmals ausgeführt werden soll. Hierzu erstellst Du einen geplanten Task, dem Du dann die Benutzerkennung und das Passwort mitgibst. Der Task wird anschließend zur angegebenen Zeit unter der angegebenen Benutzerkennung automatisch ausgeführt.
Gruß,
fritzo
speicher das Batch als CopyBalabal.cmd ab und ruf es in einer Dosbox zusammen mit dem Befehl "runas" auf. Dieser Befehl ermöglicht, eine andere Benutzerkennung beim Aufruf zu verwenden.
runas /noprofile /user:<Benutzername> CopyBalabal.cmd
Du kannst das Script auch als geplanten Task ausführen lassen, was sich besonders dann anbietet, wenn es unbeaufsichtigt und/oder mehrmals ausgeführt werden soll. Hierzu erstellst Du einen geplanten Task, dem Du dann die Benutzerkennung und das Passwort mitgibst. Der Task wird anschließend zur angegebenen Zeit unter der angegebenen Benutzerkennung automatisch ausgeführt.
Gruß,
fritzo
Salü,
Gegenfrage(n) meinerseits:
- wie bekommst du heraus, wann du das Script nicht mehr laufen lassen mußt, weil alle Rechner den Ordner bereits erhalten haben
- Was spricht gegen die von mir bereits 2* gepostete Lösung?
Gruß
jaja ich halt mich ja schon raus - interessiert mich aber, warum um Inris Vater willen - die schlechte Lösung den Vorzug erhält.
:D
Simples Mißverständnis. "Subnetz" bezeichnet hier die ersten drei Okette des abzufragenden Subnetzes und die IP-Adressen das letzte Oktett.
Gib nach Start des Scripts folgendes ein:
Subnetz: 195.190.0
Start-IP: 1
End-IP: 240
Ansonsten tendiere ich dazu, die Meinung unseres verehrten Doc House aka Timo mitzuvertreten. Das Batch hier eignet sich für eine AdHoc-Verteilung auf wenige Rechner, zB für Nacharbeiten nach einer Verteilung. Wenn Du sicherstellen willst, daß Software turnusmässig verteilt wird und das ganze auch per Log o.ä. nachvollziehbar sein soll, dann würde ich es definitiv auch eher über ein Startscript umsetzen; es ist einfach sicherer so. Falls Eure Umgebung größer sein sollte, dann solltet Ihr langfristig auch über ein Softwareverteilungs-Tool wie SMS o.ä. nachdenken.
Gruß,
fritzo
Simples Mißverständnis. "Subnetz" bezeichnet hier die ersten drei Okette des abzufragenden Subnetzes und die IP-Adressen das letzte Oktett.
Gib nach Start des Scripts folgendes ein:
Subnetz: 195.190.0
Start-IP: 1
End-IP: 240
Ansonsten tendiere ich dazu, die Meinung unseres verehrten Doc House aka Timo mitzuvertreten. Das Batch hier eignet sich für eine AdHoc-Verteilung auf wenige Rechner, zB für Nacharbeiten nach einer Verteilung. Wenn Du sicherstellen willst, daß Software turnusmässig verteilt wird und das ganze auch per Log o.ä. nachvollziehbar sein soll, dann würde ich es definitiv auch eher über ein Startscript umsetzen; es ist einfach sicherer so. Falls Eure Umgebung größer sein sollte, dann solltet Ihr langfristig auch über ein Softwareverteilungs-Tool wie SMS o.ä. nachdenken.
Gruß,
fritzo
Hi,
hier eine kurze Auflistung einiger Möglichkeiten, bei Benutzeranmeldung oder Computerstart Scripts oder andere Binaries ausführen zu lassen. Kein Anspruch auf Vollständigkeit, es gibt noch viel mehr Möglichkeiten.
1. usrlogon.cmd
Das Batchfile C:\windows\system32\usrlogon.cmd wird bei jeder Benutzeranmeldung ausgeführt. Hierüber lässt sich ein weiteres Script starten, zB ein Logonscript.
2. HKCU - Runkey
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Einträge in diesem Key werden bei jeder Benutzeranmeldung im Benutzerkontext ausgeführt.
3. HKLM - Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Einträge in diesem Key werden bei jedem Rechnerstart ausgeführt - eignet sich für computerbasierte Startscripts
4. HKLM - RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
Einträge in diesem Key werden beim nächsten Rechnerstart einmalig ausgeführt - eignet sich für einmalige Aktionen
Ansonsten kannst Du, sofern eine Domäne vorhanden ist (habt Ihr ja evtl. irgendwann) eine Gruppenrichtlinie erstellen und dort Logonscripts für den Rechnerstart und/oder die Benutzeranmeldung definieren. Das ist die eleganteste Möglichkeit, die aber nur bei Verwendung einer Domäne zur Verfügung steht. Falls Dir das nicht geläufig sein sollte, schau Dir am besten www.gruppenrichtlinien.de an. Das ist, was Timo mit "Computerstartupscripte" meint (falls ich mich irre - ignore or flame)
Gruß,
fritzo
hier eine kurze Auflistung einiger Möglichkeiten, bei Benutzeranmeldung oder Computerstart Scripts oder andere Binaries ausführen zu lassen. Kein Anspruch auf Vollständigkeit, es gibt noch viel mehr Möglichkeiten.
1. usrlogon.cmd
Das Batchfile C:\windows\system32\usrlogon.cmd wird bei jeder Benutzeranmeldung ausgeführt. Hierüber lässt sich ein weiteres Script starten, zB ein Logonscript.
2. HKCU - Runkey
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
Einträge in diesem Key werden bei jeder Benutzeranmeldung im Benutzerkontext ausgeführt.
3. HKLM - Run
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Einträge in diesem Key werden bei jedem Rechnerstart ausgeführt - eignet sich für computerbasierte Startscripts
4. HKLM - RunOnce
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
Einträge in diesem Key werden beim nächsten Rechnerstart einmalig ausgeführt - eignet sich für einmalige Aktionen
Ansonsten kannst Du, sofern eine Domäne vorhanden ist (habt Ihr ja evtl. irgendwann) eine Gruppenrichtlinie erstellen und dort Logonscripts für den Rechnerstart und/oder die Benutzeranmeldung definieren. Das ist die eleganteste Möglichkeit, die aber nur bei Verwendung einer Domäne zur Verfügung steht. Falls Dir das nicht geläufig sein sollte, schau Dir am besten www.gruppenrichtlinien.de an. Das ist, was Timo mit "Computerstartupscripte" meint (falls ich mich irre - ignore or flame)
Gruß,
fritzo
Nochwas - falls Deinem Chef eine Windows-Serverlizenz zu teuer sein sollte, tut es vielleicht zur Not ja auch ein Samba-Server - mit dem lässt sich ein Domänencontroller nachbilden und man hat auch zentrale File/Druckdienste.
hth,
fritzo
hth,
fritzo