WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   wiedermal batchjob (http://www.wcm.at/forum/showthread.php?t=108570)

spunz 12.09.2003 11:46

wiedermal batchjob
 
wiedermal brauch ich eure hilfe bei nem batchjob :D

ich will eine textdatei welche diverse ip adressen enthält zeilenweise einlesen und weiterverarbeiten:

die erste zeile einlesen (zb 192.168.0.1) und aktion A ausführen => wenn ip addresse online/erreichbar => ip addresse aus textfile löschen.

ich will einen job mit psexec remote auf etlichen pc´s ausführen (rpc patch die zweite). da für einen sus server oder andere softwareverteiler kein geeigneter server da ist, soll es einfach mit nem batchjob erledigt werden. am wichtigsten wäre mir mal die funktion das die ip´s zeilenweise eingelesen wird und zb als variable verwendet werden kann.


Code:

COPY C:\PATCH\PATCH.BAT \\%IP-ADRESSE%\C$\WINNT\TEMP
PSEXEC \\%IP-ADRESSE% -u admin -p meinkennwort c:\WINNT\TEMP\PATCH.BAT
DEL \\%IP-ADRESSE%\C$\WINNT\TEMP\PATCH.BAT


_m3 12.09.2003 11:53

Code:

#!/usr/bin/perl
use strict;

open(IN, "ipliste.txt") or die "Lesefehler $!"
while(<IN>) {
    chomp;
    # Das nachfolgende könnte man auch mit dem Perl-Eigenen "copy" machen
    my $cmd = "COPY C:\PATCH\PATCH.BAT \\$_\C$\WINNT\TEMP";
    system($cmd);
    $cmd="PSEXEC \\$_ -u admin -p meinkennwort c:\WINNT\TEMP\PATCH.BAT"
    # Das nachfolgende könnte man auch mit dem Perl-Eigenen "remove" machen
    $cmd = "DEL \\$_\C$\WINNT\TEMP\PATCH.BAT"
    system($cmd);
}
close(IN);

# Die Fehlerbehandlung mit Rückgabewert des System-Calls wird dem werten Leser als Übungsaufgabe überlassen. ;)


spunz 12.09.2003 15:04

@m3: danke, aber wenn möglich möchte ich es mit windows boardmitteln erledigen :)

flinx 12.09.2003 15:59

Stehen in dem Textfile nur die IP Adressen zeilenweise?

spunz 12.09.2003 16:30

ja

helios 12.09.2003 16:40

die ip-adressen zeilenweise in eine variable (hier %%i) einlesen kannst in einem batchjob folgendermassen:
Code:

for /F %%i in (adresses.txt) do (
  @echo %%i
)


Potassium 14.09.2003 22:30

@ spunz was is psexec? bzw wo finde ich die datei?

JackLemon 15.09.2003 00:22

eine software mir der du programme übers netzt auf einem anderen computer ausführen kannst, und wahlweise vorher rüberkopieren. ein teil von den pstools, die sind absolut genial.

http://www.sysinternals.com

-JL

spunz 15.09.2003 07:45

Zitat:

Original geschrieben von helios
die ip-adressen zeilenweise in eine variable (hier %%i) einlesen kannst in einem batchjob folgendermassen:
Code:

for /F %%i in (adresses.txt) do (
  @echo %%i
)


so werden leider alle zeilen auf einmal eingelesen :(

helios 15.09.2003 08:47

also bei mir nicht!

bei mir wird jede adresse einzeln in die variable %%i gelesen und dann einzeln mit echo ausgegeben. in der datei adresses.txt steht jede adresse in einer eigenen zeile.

habs allerdings nur mit win-xp probiert. welches os hast denn?

btw. was meinst du mit alle auf einmal eingelesen? ich mein, sie werden natürlich alle eingelesen, aber bei jedem schleifen-durchlauf nur eine adresse. und dann kannst ja, statt die adresse mit echo auszugeben, damit machen was immer du willst.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag