Batch Programmierung

Das nachfolgende Batch Skript in Verbindung mit choice.exe und dnscmd.exe dient als Anregung für den Einsatz in der Praxis.

@echo off
setlocal
set SRV=Your_DNS_Server
set FZONE=Your.domain.com
set RZONE=168.192.in-addr.arpa
set IN=Hosts.txt
echo Ist die Datei Hosts.txt vorhanden und steht darin je ein Eintrag fuer DNS in der Form ...
choice /c jn /m "Hostname;IP-Adresse ?"
if errorlevel 2 goto exit
echo .
echo "Lese %IN% und erzeuge A Records ..."
for /f "tokens=1-2 delims=;" %%a in (%IN%) do (
 echo %%a %%b
 dnscmd %SRV% /RecordAdd %FZONE% %%a A %%b >> Add2DNS_A.log
)
echo "Lese %IN% und erzeuge PTR Records ..."
for /f "tokens=1-2 delims=;" %%a in (%IN%) do (
 echo %%b %%a
 for /f "tokens=3,4 delims=." %%e in ('echo %%b') do (
  dnscmd %SRV% /RecordAdd %RZONE% %%f.%%e PTR %%a.%FZONE% >> Add2DNS_PTR.log
))
endlocal
:exit

 

 

Beschreibung

In der Datei Hosts.txt muss je Server eine Zeile Hostname;IP-Adresse vorhanden sein.
Im Skript werden mit set ... die Variablen definiert.
Mit choice ... und errorlevel wird auf der Konsole eine Abfrage nach ja/nein ausgewertet, um einen Abbruch zu ermöglichen.
Mit for /f ... do () wird die Datei hosts.txt zeilenweise eingelesen und die eingelesenen Werte zur Weiterverarbeitung an dnscmd.exe übergeben.
Mit tokens=1-2 ist festgelegt, dass die durch delims=; getrennten Werte (also Hostname und IP-Adresse) über die Variablen %%a und %%b als Parameter an dnscmd.exe übergeben werden.
Mit dnscmd %SRV% /RecordAdd %FZONE% ... wird für jeden Host ein A Record auf Your_DNS_Server erzeugt.
Mit for /f ... do () wird die Datei hosts.txt ein zweites Mal zeilenweise eingelesen und die eingelesenen Werte über delims=; getrennt zur Weiterverarbeitung an eine eingeschlossene for /f ... in ('echo %%b') do () Loop übergeben.
In dieser eingeschlossenen Loop wird mit for /f nicht eine Datei eingelesen, sondern die Ausgabe von 'echo %%b' (IP-Adresse) ausgewertet. Aus der IP-Adresse wird mit tokens=3,4 der 3. und 4. Teil der IP-Adresse extrahiert und an dnscmd %SRV% /RecordAdd %RZONE% ... als Parameter zur Erzeugung eines PTR Records übergeben.
Die Ausgaben von dnscmd werden in eine Datei umgeleitet.