Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Hosts-Datei dynamisch ergänzen

Frage Entwicklung Batch & Shell

Mitglied: kugman

kugman (Level 1) - Jetzt verbinden

24.08.2010 um 16:08 Uhr, 6691 Aufrufe, 7 Kommentare

in einem Domänen-Netzwerk soll die Hosts-Datei zentral wartbar gemacht werden. Die Einträge, die bereits vorhanden sind (können unterschiedlich sein) sollen jedoch erhalten bleiben. Änderungen sollen möglich sein.

Die Logik, die ich mir ausgedacht habe ist folgende:

1.) Master-Datei

es gibt eine Master-Datei Namens hosts-master.txt Diese steht auf dem Fileserver und dort werden vom Admin Ergänzungen eingetragen, um die alle lokalen Hosts-Dateien ergänzt werden sollen.

Diese Datei hat den Inhalt:

01.
192.168.123.1	haumichblau.irgendwas.de 
02.
10.47.211.5	laberzapf.trallalla.com 
03.
172.18.25.3	nochein.server.net
2.) Skript (das per Startskript bei der Anmeldung auf dem einzelnen XP-Rechner läuft)

Das Skript soll von der Logik her jede Zeile der Masterdatei prüfen, ob der Zeileninhalt in der lokalen Hosts-Datei bereits vorhanden ist.
- wenn ja, prüfe nächste Zeile
- wenn nein - trage es in der hosts-Datei zusätzlich mit ein


hier meine Batch-Datei
01.
::hosts-ergänzen.cmd 
02.
::ergänzt die lokale hosts-datei um weitere Einträge, ohne den Inhalt zu löschen 
03.
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
04.
::Definition der Variablen 
05.
set hosts=%windir%\system32\drivers\etc\hosts 
06.
::Sicherung der vorhandenen hostsdatei erstellen 
07.
xcopy %hosts%  %WINDIR%\system32\drivers\etc\hosts.backup /y 
08.
 
09.
::zeilenweise die master-datei durchsuchen 
10.
for /f "tokens=1,2 delims=	" %%I in (hosts-master.txt) do @( 
11.
	find /i "%%I" %hosts% 
12.
	if %errorlevel% NEQ 0 echo %%I	%%J   >>%hosts%   
13.
14.
 
Mein problem ist nun, dass mein ERRORLEVEL niemals nicht 0 ist. Egal, ob in der hosts-datei der Eintrag drinsteht oder nicht.

Darüber stolpere ich gerade.

Kann mir hier bitte jemand dabei helfen, den Knick aus der Optik bekommen?

Vielen lieben Dank schonmal


Markus
Mitglied: bastla
24.08.2010 um 16:26 Uhr
Hallo kugman!

Du hast Dir von allen Möglichkeiten, denn Errorlevel zu verwenden, genau die ausgesucht, die in einer "for"-Schleife nicht ohne Weiteres funktioniert (Stichwort "delayedexpansion") ...

Gehen sollte es entweder mit
find /i "%%I" "%hosts%">nul || echo %%I	%%J   >>"%hosts%"
oder zur Not auch mit
01.
find /i "%%I" "%hosts%">nul 
02.
if errorlevel 1 echo %%I	%%J   >>%"hosts%"
[Edit]
Eigentlich sollte aber auch anstelle der Schleife ein
findstr /v /g:"%hosts%" "hosts-master.txt">>"%hosts%"
genügen.
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: kugman
24.08.2010 um 16:46 Uhr
Hallo bastla,

Vielen Dank für den Tipp!

na klasse - Jackpot! Ich geh nacher Lotto spielen.

jetzt fallen mir grad aber noch zwei sachen ein.

1.) ich muss in der hosts-datei zuerst ne neue Zeile einfügen, denn sonst ist im Zweifel mein Eintrag, den ich mit >> reinschiebe nicht in einer neuen Zeile, sondern hinter der letzten Zeile
2.) kann ich eigentlich auch Zeilen rausschmeißen?
Bitte warten ..
Mitglied: bastla
24.08.2010 um 17:00 Uhr
Hallo kugman!

Zu 1.)
Eine Leerzeile (bzw Zeilenschaltung) einfach per
echo\>>"%hosts%"
hinzufügen.

Zu 2.)
Ja

Ok, Du wirst vermutlich doch auch wissen wollen, wie das gehen könnte (Konjunktiv, weil noch immer ungetestet):
findstr /v /g:"Rausdamit.txt" "%hosts%">"%hosts%"
Die zu entfernenden Zeilen müssten dann natürlich in der "Rausdamit.txt" stehen ...

Grüße
bastla
Bitte warten ..
Mitglied: kugman
24.08.2010 um 17:04 Uhr
Hallo Bastla,
zu 1.) danke hat geklappt - nu macht er halt automatisch immer eine Zeilenschaltung, hab ich halt lauter Leerzeilen in der Datei, aber das ist eigentlich egal
zu 2.) klar - hätt ich ja eigentlich selber draufkommen können, denn dass das /v quasi mein Suchergebnis invertiert, weiss ich eigentlich... (das ist dann ja vielleicht auch die Lösung für 1.))

Grüße,

markus
Bitte warten ..
Mitglied: bastla
24.08.2010 um 17:15 Uhr
Hallo kugman!

1.) sollte ja nur einmal für jeden Rechner erforderlich sein (jedenfalls, wenn danach keine manuellen Änderungen mehr durchgeführt werden) - ansonsten eben einmalig am Beginn des Batches - oder, falls Du bei der "for"-Schleife bleibst, nur, wenn tatsächlich eine Ergänzung erfolgt - etwa so:
01.
set "Flag=" 
02.
for /f "tokens=1,2 delims=	" %%I in (hosts-master.txt) do @(  
03.
    find /i "%%I" "%hosts%">nul || ( 
04.
        if not defined Flag (set "Flag=True" & echo\>>"%hosts%") 
05.
        echo %%I	%%J   >>"%hosts%" 
06.
07.
)
Grüße
bastla
Bitte warten ..
Mitglied: DerSchorsch
24.08.2010 um 18:17 Uhr
nur mal so zum Verständnis:
warum nutzt du nicht einfach DNS?

Dank Domäne habt ihr ja schon mind. einen DNS-Server...
Bitte warten ..
Mitglied: kugman
25.08.2010 um 10:05 Uhr
das ist schon klar - wir nutzen auch DNS, allerdings kommt auch ein DNS irgendwo an seine Grenzen, weil ich in meinen (übrigens öffentlichen DNS) nicht für jede Domäne eine Zone anlegen kann/will...
Deshalb gibt es Fälle, in denen es einfacher ist, eine hosts-datei zu pflegen.

Logisch hab ich alles, was unsere eigenen Zonen angeht auch im DNS drin.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell - Dateien vergleichen und ergänzen
Frage von Franz-Josef-IIBatch & Shell11 Kommentare

Guten Tag Ich bin wieder einmal bei meiner CSV dran und hänge :-( trotz Google und Co Ausgangslage ist ...

Batch & Shell
Ergänzen einer CSV Datei als letze Spalte mit Teil der Dateiname
Frage von moltitiBatch & Shell11 Kommentare

ich habe ca. 12000 Dateien die im Batch Betrieb ergänzt werden sollen. Der Aufbau der Dateien ist etwa so: ...

Batch & Shell
Namen mehrerer Dateien ergänzen per Batchdatei
Frage von adventureman2Batch & Shell2 Kommentare

Hallo! Ich habe einige hundert GPX-Dateien meines alten GPS-Gerätes auf dem Rechner die mit JJJJMMTT.gpx benannt sind. Das neue ...

Windows 7
Bindestrich in der Hosts-Datei
Frage von bytecounterWindows 76 Kommentare

Hallo zusammen, für lokale Tests müsste ich einige Domainnamen lokal umleiten. Dazu wollte ich eigentlich den kurzen Dienstweg gehen ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 32 MinutenWindows 10

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 16 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 20 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...