steff221
Goto Top

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 !!!

Content-Key: 134016

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

Printed on: April 29, 2024 at 06:04 o'clock

Member: fritzo
fritzo Jan 21, 2010 at 11:45:55 (UTC)
Goto Top
@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
)
Member: miniversum
miniversum Jan 21, 2010 at 11:46:22 (UTC)
Goto Top
Mal ungetestet kannst du es mal damit versuchen:
@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
Mitglied: 60730
60730 Jan 21, 2010 at 11:52:25 (UTC)
Goto Top
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

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ß
Member: Tommy70
Tommy70 Jan 21, 2010 at 12:05:50 (UTC)
Goto Top
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.
Member: Steff221
Steff221 Jan 21, 2010 at 12:06:09 (UTC)
Goto Top
Wow , das ist ja mal fix , vielen Dank für die schnelle Hilfe !!!
Werde es direkt testen und dann mein feedback posten.

nochmal vielen Dank !!!!
Member: Steff221
Steff221 Jan 21, 2010 at 13:37:49 (UTC)
Goto Top
geht leider noch nicht so ganz ..
was ich vergessen habe ist die authentifizierung ....müsste doch sowas wie einen global account haben um das verzeichnis auf die rechner zu kopieren, oder sehe ich das falsch.

das würde auch das scheitern des skripts direkt am anfang erklären, sieht so aus als würde er direkt beim scannen scheitern, fehler oder so gibbet nich
Mitglied: 60730
60730 Jan 21, 2010 at 13:43:37 (UTC)
Goto Top
Servus,

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ß
Member: fritzo
fritzo Jan 21, 2010 at 14:00:32 (UTC)
Goto Top
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.

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
Member: Steff221
Steff221 Jan 21, 2010 at 14:29:02 (UTC)
Goto Top
erstmal danke für die schnellen Antworten !

@fritzo

wenn ich das skript ausführe werde ich im 1. schritt aufgefordert das subnet einzugeben
in meinem fall : 255.255.255.128
start IP : 195.190.0.1
end IP :195.190.0.240

danach erscheint :

255.255.255.128.195 offline

danach abbruch


sorry für die ständigen nachfragen face-smile
Mitglied: 60730
60730 Jan 21, 2010 at 14:41:04 (UTC)
Goto Top
Zitat von @Steff221:
sorry für die ständigen nachfragen face-smile

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.
Member: fritzo
fritzo Jan 21, 2010 at 14:50:16 (UTC)
Goto Top
: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
Member: Steff221
Steff221 Jan 21, 2010 at 15:23:43 (UTC)
Goto Top
Hi,

dachte mir ich lass das einfach durchlaufen , if exist > weitermachen , if not exist > kopieren .....
das ich damit rechner die nicht "on" sind NICHT abdecke wird mir auch grade bewusst, von da her ist Deine Lösung mit den Start Skripten sicher die besser Variante.
Allerdings haben wir gar keine Dömane ...aller Rechner der Firma befinden sich in einer Arbeitsgruppe .......
Bitte fragt mich nicht wieso, erhalte auf diese Frage von cheffe selbst keine vernüftige Antwort. Weiß nur das bald die neuen Server kommen sollen ....dann soll alles besser werden ......*zwinker*
Von daher werde ich auch an der Lösung von "fritzo" scheitern, da es nur lokale Admins gibt....wie soll ich das packet ohne entsprechende rechte verteilen ........

werde wohl erstmal ein paar grundsätzliche probleme hier beseitigen müssen, dann nochmal genauere gedanken über das skript machen, ein paar FAQ und tutorials lesen und mich dann nochmal hier melden.
Falls noch jemand ne idee hat, immer her damit , wenn nicht auch nicht schlimm , ihr habt mir so schon gewaltig weiter geholfen !!!
Member: fritzo
fritzo Jan 21, 2010 at 15:38:17 (UTC)
Goto Top
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
Member: fritzo
fritzo Jan 21, 2010 at 15:45:47 (UTC)
Goto Top
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
Member: Steff221
Steff221 Jan 21, 2010 at 16:02:44 (UTC)
Goto Top
Hey,

wow, das sind auf jeden fall eine Menge hilfreicher Infos !!!
Denke hiermit wird sich auf jeden Fall früher oder später ein Erfolg einstellen.

@fritzo
mit den korrigierten Eingaben, geht es soweit das er scannt und versucht den kopier vorgang zu starten

Damit habe ich auf jeden Fall schonmal eine gute basis, alles weitere dann wenn hier Infrastruktur mäßig erweitert wurde.

Nochmals vielen vielen Dank für eure Zeit und Unterstützung !!!!!!

steff