Jump to content
Sign in to follow this  
fritzo

Batchprogrammierung

Recommended Posts

Hi,

 

ich hab in letzter Zeit viel Spaß mit dem Erstellen von Batches und mache einfach mal einen Thread mit kleinen Tips dazu auf. Wahrscheinlich sagen einige Leute jetzt "baaah, es gibt doch VBScript" und haben recht damit, aber vom Zeitfaktor her ist nichts schneller gebaut als ein Batchfile.

 

Tip 1: Ping auf mehrere Rechner und Auswertung

---------------------------------------------------------------------

Erstellt eine Datei namens hosts.txt, in der Ihr Eure Systeme listet, getrennt mit CrLf. Dann geht hin und erstellt ein Batchfile namens pinger.cmd mit folgendem Inhalt:

 

@echo off

set host=hosts.txt

for /f %%i in (%host%) do (ping -n 1 %%i | find "Antwort" > nul ) && (@echo %%i ist online) || (@echo %%i ist offline)

 

Würde mich sehr freuen, wenn andere auch kleine Tips zu Batches hier posten.

 

Grüße,

Fritz

Share this post


Link to post

Okay: Folgende batch erstellt ein Backup ausgewählter Ordner auf CD-RW mit der Kommandozeilenversion von Nero:

 

@echo off

set Ziel="%date%"

 

rem Die Variable Ziel bestimmt später den Namen der CD, nämlich das aktuelle Datum

 

xcopy /d /y /e /i H:\Ordner1 J:\backbrenn\Ordner1

xcopy /d /y /e /i H:\Ordner2 J:\backbrenn\ordner2

xcopy /d /y /e /i H:\Ordner3 J:\backbrenn\Ordner3

 

rem Alle Daten werden in einen temporären Backbrennordner verschoben, da Nero per

rem Kommandozeile nur ein Ordner übergeben werden kann (oder weiss jemand was anderes?)

 

C:\Programme\Ahead\Nero\NeroCmd.exe --write --real --drivename f --speed 8 --iso %Ziel% --create_iso_fs --verify "F:\backbrenn\*.*" --recursive --detect_non_empty_cdrw --force_erase_cdrw

 

rem Nero starten: CD wird überprüft, wenn nicht leer gelöscht und

rem anschliessend das aktuelle rem Backup geschrieben und überprüft- evtl rem Fehler siehe

rem neroerr.txt. Auf diese Weise hat ma immmer ein aktuelles Backup.

rem --drivename f = CD-Brenner

rem Achtung! CD- Laufwerk wird möglicherweise automatisch geöffnet

rem und wieder geschlossen - das ist okay so.

 

rmdir /s /q

 

rem Backbrennordner wird gelöscht.

 

shutdown -u

 

rem Rechner wird runtergefahren.Shutdown.exe muss auf dem Rechner sein.

rem Download-URL http://www.budja.com/shutdown/shutdown.exe. - geht nur mit W2k/XP

Share this post


Link to post

Da hätte ich auch noch ein kleines ... ganz Toll an einer LAN Party :) mach immer wieder Fun :)

 

:x

net send * Hallo der Nachrichtendienst ist doch schon eine Tolle Sache :) mfg LANPARTY GEIST

goto x

 

wenig code grosse wirkung :)

Share this post


Link to post

Komisch wenn ich das letzte in meinem Netz teste kommt nix nirgendwo an. Hm, sollte man dazu den Nachrichtendienst auch anschalten wenn man auf ne LAN geht? :)

Share this post


Link to post

Moin!

Auch eine nützliche Batch:

 

 

'Ordner und Dateien auflisten und in eine Textdatei wiedergeben

 

ordnername = "c:\"

textdatei = "C:\testdatei.txt"

 

Set IFileSystem3 = CreateObject("Scripting.FileSystemObject")

 

'auf den Ordnernamen zugreifen

Set IFolder = IFileSystem3.GetFolder(ordnername)

For each IFile in IFolder.Files

liste = liste & IFile.name & vbCrlf

 

next

 

msgbox liste

 

'Textdatei anlegen und überschreiben,

'falls schon vorhanden

Set ITextStream = IFileSystem3.CreateTextFile(textdatei, true)

 

 

'text schreiben

ITextStream.Write(liste)

 

 

Viel Spaß noch! ;)

Share this post


Link to post

@echo Es wird die wichtig.msi auf dem Rechner installiert

 

net use L:\\softwareserver\msi

cd C:

md \msi

xcopy L:wichtig.msi "C:\msi\"

msiexec /a C:\msi\*.msi

pause

@echo Nur um die Installation zum Abschluss zu bringen, bevor die Ordner oder Netzlaufwerke wieder gelöscht werden. Nach installation beliebige Taste druecken

rmdir /s /q \Explorer

net use L: /del

 

zusatz das /a steht für admin installation.

nur eine möglichkeit msi pakete zu installieren, für gemischte umgebungen oder für admins ohne GPO´s

 

zu beachten ist auch das der text hinter dem 2te @echo nachher in einer zeile steht. sonst gibts fehler...

 

mfg

NetJay

Share this post


Link to post

hier ein script was ich eine zeitlang verwendet habe um diverse statistiken mit rrdtool (http://www.rrdtool.org) zu erstellen. hier ein beispiel für eine apc usv anlage mit management karte wo diverse werte wie load, temperatur der sensoren, ladestande,... aufgezeichnet wurden. für die bedarfsplanung ist sowas wohl unumgänglich. ich habe es auf auf eine snmp abfrage gekürzt, wäre sonst etwas zu lange ;)

 

 

REM ### USV Status per SNMP verarbeiten ###

 

REM ### Datums Variable erzeugen ###

SET DATUMUPS=

DATE.EXE +%%s > DATEUPS.TXT

SET /P DATUMUPS= < DATEUPS.TXT

DEL DATEUPS.TXT

 

REM ### Daten per SNMP holen ###

snmpget 10.70.3.21 public .1.3.6.1.4.1.318.1.1.1.2.2.1.0 > UPS_BATT.TXT

 

REM ### Daten einlesen ###

SET /P upsbatt= <UPS_BATT.TXT

 

REM ### DATEN in RRD Datenbank speichern ###

RRDTOOL update upsbatt.RRD %DATUMUPS%:%upsbatt%

 

REM ### Grafik aus RRD Datenbank erzeugen ###

REM ### Externer Temperatur Sensor###

rrdtool graph ..\data\stats\upsbatt.gif --start -86400 --vertical-label "Battery Capacity" -w 600 -h 200 DEF:upsbatt=upsbatt.rrd:upsbatt:AVERAGE AREA:upsbatt#00ff00:"Battery Capacity"

 

 

am ende kommt ein kleines bild raus welches einfach in ner webseite eingebaut werden kann (siehe anhang). nachdem die hostzahl aber stark gestiegen ist und wir weit mehr werte aufzeichnen (switche, router, drucker, hdd verbrauch, temperaturen,...) wurde mir die sache zu aufwändig und ich hab auf cacti umgestellt (http://www.raxnet.net). damit ist es dank templates weit einfacher eine große anzahl an hosts zu verwalten.

post-19696-13567389182227_thumb.gif

Share this post


Link to post

für alle die noch alte nt clients ohne sus client betreuen müssen, hier ein kleines script welches diese aufgabe mit psexec.exe (google) erledigt. es sind dazu 2 scripte notwendig, "remoteinstall.bat" wird gestartet und holt sich aus der textdatei "ipadressen.txt" die rechner die es updaten soll. auf diese clients wird zuerst die datei "patch.bat" kopiert welches dann mit psexec am entfernten client gestartet wird.

 

damit können zb auch die sasser/msblaster patches problemlos verteilt werden.

 

 

 

 

### Remoteinstall.bat:

 

rem @ECHO OFF

rem CLS

 

for /F %%i in (ipadressen.txt) do (

 

NET USE \\%%i\IPC$ /USER:adminuser password

COPY PATCH.BAT \\%%i\C$\WINNT\

PSEXEC \\%%i -u adminuser -p password C:\WINNT\PATCH.BAT

DEL \\%%i\C$\WINNT\PATCH.BAT

NET USE \\%%i\IPC$ /D

 

)

 

########################

 

 

 

### patch.bat

 

@ECHO OFF

CLS

 

IF EXIST "%WINDIR%\PROFILES\ALL USERS\Startmen\." GOTO NT

IF EXIST "%ALLUSERSPROFILE%\." GOTO W2K

GOTO ENDE

 

:NT

net use \\server\ipc$ password /user:adminuser

\\server2\install\TEMP\patch.exe /quiet /norestart

net use \\server\ipc$ /d

GOTO ENDE

 

:W2K

GOTO ENDE

 

:ENDE

Share this post


Link to post

Hi,

 

hier ein Batchfile, das ich benutzt habe, um die Installation von NAI ViruScan 7.1 auf Systemen zu checken. Es

 

-liest die zu scannenden Hosts aus einer Datei namens "host.txt" (Hostname, mit CrLf getrennt)

-pingt den Host an - wenn keine Antwort erfolgt, wird der nächste Host gelesen

-wenn der Host online ist, wird remote geprüft, ob die drei Prozesse laufen, die zu den NAI-Diensten gehören

-Ausgabe erfolgt am Bildschirm und in drei Textfiles (offline, ok, Fehler)

 

Ihr braucht "tasklist.exe" (WindowsXP). Verwendet keine Prozess/Dienstenamen über 15 Zeichen, denn die werden teilweise gekappt. Der "find" - Befehl kommt aber auch mit Teilstrings klar, es ist also kein Problem.

 

Viele Grüße,

Fritz

 

rem --------------------------------------------------------------------------

rem Start des Batchfiles

 

@echo off

cls

@echo Checkscript fuer NAI ViruScan7.1 - Version 0.2

@echo Fritzo 01.07.2004

 

rem ------------------File-Namen

set host=host.txt

set file_pos=NAI_ok.txt

set file_neg=NAI_Fehler.txt

set file_off=NAI_offline.txt

 

rem ------------------Prozessnamen

set b1=FrameworkServic

set b2=mcshield.exe

set b3=vstskmgr.exe

 

rem ------------------Dienstnamen

set d1=McAfee Framework Service

set d2=McShield

set d3=McTaskManager

 

rem ------------------Ergebnis-Files loeschen

@echo Check auf bereits vorhandene Files mit Ergebnissen

@echo.

if exist %file_pos% del %file_pos% && (@echo File %file_pos% wurde geloescht, ok) || (@echo File %file_pos% nicht vorhanden, ok)

if exist %file_neg% del %file_neg% && (@echo File %file_neg% wurde geloescht, ok) || (@echo File %file_neg% nicht vorhanden, ok)

if exist %file_off% del %file_off% && (@echo File %file_off% wurde geloescht, ok) || (@echo File %file_off% nicht vorhanden, ok)

@echo.

@echo.

 

rem ------------------Loop Start

for /f %%i in (%host%) do (ping -n 1 %%i | find "Antwort" > nul ) && (

 

@echo -----------------------------------------------

@echo Host: %%i ist online

 

tasklist /s \\%%i | find /i "%b1%" > nul && (echo %%i - Dienst %d1% laeuft >> %file_pos% && echo Dienst %d1% laeuft) || (echo %%i - Dienst %d1% laeuft nicht >> %file_neg% && echo Dienst %d1% laeuft nicht)

 

tasklist /s \\%%i | find /i "%b2%" > nul && (echo %%i - Dienst %d2% laeuft >> %file_pos% && echo Dienst %d2% laeuft) || (echo %%i - Dienst %d2% laeuft nicht >> %file_neg% && echo Dienst %d2% laeuft nicht)

 

tasklist /s \\%%i | find /i "%b3%" > nul && (echo %%i - Dienst %d3% laeuft >> %file_pos% && echo Dienst %d3% laeuft) || (echo %%i - Dienst %d3% laeuft nicht >> %file_neg% && echo Dienst %d3% laeuft nicht)

) || (

@echo -----------------------------------------------

(@echo Host %%i ist offline && @echo Host %%i ist offline >> %file_off%)

)

rem ------------------Loop Ende

 

rem Ende des Batchfiles

rem -------------------------------------------------------------------------------

Share this post


Link to post
Original geschrieben von psytekk

Also msi packete installier ich via GPO :) geht einfacher :)

 

???

was steht denn in der beschreibung???

schon mal softwareverteilung mit GPO an den users ordner in der ads gehängt?

schon mal GPO´s für win98 und oder NT gemacht? nö

für solche fälle ist das, hätt ich vielleicht dabeischreiben sollen...

 

 

 

 

mfg

NetJay

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...