nobbi.the.great
Goto Top

Batch - nslookup Ausgabe auf Treffer einschränken

Hallo ihr Lieben


Ich habe viele Netze und muss die dann und wann nach DNS Einträgen scannen.

Leider schaffe ich es nicht, die Ergebnisse zu sortieren, schreibe also alle in die .txt und scrolle dann durch.

Weiß jemand einen Weg, wie ich die Ergebnisse von nslookup (Stichwort errorlevel) nutzen kann oder einen anderen Weg, damit nur die Treffer geschrieben bzw. angezeigt werden?

Mein Code: (leicht gekürzt, erstreckt sich natürlich auf ein ganzes .255 und grafische Elemte sind vorhanden zur optischen Trennung)

@echo off
title Netz nslookup

set time=%time:~0,2%-%time:~3,2%-%time:~6,2%
set date=%date%

if exist c:\nslookup.txt goto :copy
if not exist c:\nslookup.txt goto :ns

:copy
move /y c:\nslookup.txt c:\nslookup__%date%_%time%.txt

:ns
ECHO.
ECHO Vor dem Ausfhren Netzbereich w„hlen! Beispiel: 10.2.3
ECHO.

set /p var=Netzbereich eingeben:  

nslookup %var%.1>>c:\nslookup.txt

nslookup %var%.2>>c:\nslookup.txt

nslookup %var%.3>>c:\nslookup.txt


ECHO %date%_%time%>>c:\nslookup.txt

start c:\nslookup.txt

pause




sorry wegen fehlender Formatierung, ist mir leider nicht ersichtlich wie das hier gemacht wird !!!

Grüße ... euer Nollosch

Content-ID: 175073

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

Ausgedruckt am: 24.11.2024 um 06:11 Uhr

Skyemugen
Skyemugen 21.10.2011 um 14:53:07 Uhr
Goto Top
Aloha,

... da du uns nicht respektieren möchtest (was bei uns in Form von einer Begrüßung und einem Abschlussgruß i.d.R. gepflegt wird), verweise ich dich einfach nur die lustigrote Schrift mit dem Wort Formatierungshilfe, die beim Erstellen von Beiträgen und Kommentaren durchaus ins Auge hämmert, wo du dann ##blue|## Tags findest ...

Was den Rest angeht, wenn der EP stimmt, bin ich auch bereit zu helfen (und viele andere auch ...)

greetz André

P.S.: Seltsam, du hast schon einmal die Codeformatierung gefunden, dort aber keine Begrüßung, dann wieder den Respekt entgegengebracht aber keine Formatierung und heute keines von beiden ... bedauerlich
Weiricth
Weiricth 21.10.2011 um 18:27:40 Uhr
Goto Top
lad dir von microsoft des visual studio express ist kosten los

http://www.microsoft.com/germany/express/

und machs in vb dann hast kein problem mit nix und du kannst des machen wie du es brauchst.
Nobbi.the.Great
Nobbi.the.Great 21.10.2011 um 20:58:03 Uhr
Goto Top
boar Leute, wie seid ihr drauf.

Ich bin auf Arbeit und kann nicht Ewigkeiten mit Freundlichkeiten und Formatierungen verbringen!

Meine Lösung ist so wie sie ist schon ziemlich geil und absolut tauglich, ich nutze sie jeden Tag.

Nun hätt ich sie doch gern etwas getuned weil ich letztens einen Eintrag "überscrollt" habe.


Arbeitet denn niemand mit nslookup und die Möglichkeiten der Ausgaben?

nslookup write Treffer
nslookup no write kein Treffer
Weiricth
Weiricth 21.10.2011 um 22:12:16 Uhr
Goto Top
ja und des kannst du mit vb total easy machen ist ein 4 zeiler und fertig.

und ja ich nutze nslookup aber nur händisch bei allem anderen mach ich mir schnell ein script in vb, bezüglich wiederverwendbarkeit ist des einfach sinniger
Skyemugen
Skyemugen 23.10.2011 um 09:58:06 Uhr
Goto Top
Aloha,

nein, tut mir leid, ich arbeite nicht mit NSLOOKUP

aber du könntest mir ja mal Ergebnisse aus Funden und nicht Funden posten, damit ich weiß, wie das ausschaut und was du dann weggefiltert haben willst.

Auf jeden Fall erst einmal wäre folgendes noch optimaler:

if exist c:\nslookup.txt (goto :copy) else (goto :ns)
wobei, wenn bei copy nur der onliner steht, kannst du den auch gleich in die Befehlsklammer setzen ...
for /L %%s in (1,1,255) do >>c:\nslookup.txt nslookup %var%.%%s
dürfte dein Skript auch deutlich dezimieren und ich denke, wenn ich weiß, wie deine Sortierung / Filterung aussehen soll, lässt sich die Schleife einfach erweitern und nur Treffer liefern face-wink

greetz André
Nobbi.the.Great
Nobbi.the.Great 25.10.2011 um 13:01:41 Uhr
Goto Top
Das Ergebnis sieht so aus (gekürzt). Die Trennlinien sind ein simples ECHO Unterstrich.
Die Blöcke, die nur den DNS-Server wiedergeben, hätte ich gern nicht geschrieben oder wenn, dann an am Ende oder in eine seperate .log (.txt).
Leider gibt nslookup irgendwie keinen passenden errorlevel aus, bei "... nicht gefunden: Non-existent domain".

Siehst Du da eine Möglichkeit?

Im Grunde hast Du Recht, aber ich bin mit Schleifen nicht so gut, werde mich bei passender Gelegenheit aber natürlich damit näher befassen!

Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

Name:    PC1.local
Address:  192.168.1.2

________________________________
Server:  dns-server.local
Address:  192.168.1.250

Name:    PC2.local
Address:  192.168.1.3

________________________________
Server:  dns-server.local
Address:  192.168.1.250

Name:    SWITCH1.local
Address:  192.168.1.4

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Server:  dns-server.local
Address:  192.168.1.250

________________________________
Skyemugen
Skyemugen 25.10.2011 um 13:57:06 Uhr
Goto Top
Aloha,

also wenn ich das richtig sehe und verstehe, sind die Ausgaben, wo nur Server und Address stehen, die Fehler, sprich non-existent domain ... interessant, dass nslookup die Fehlermeldung nicht in die Log-Datei schreibt, sondern in der Konsole ausgibt und sich auch nicht per findstr /V herausfiltern lässt ...

Auch die weiteren Optionen zu nslookup scheinen mir diesbezüglich wenig hilfreich ... hmm, momentan habe ich leider nicht die Luft, mich genauer hineinzudenken und rumzupfuschen face-wink aber die Woche bestimmt noch.

greetz André


edit: eventuell nutzt dir die aus Linux stammende Alternative dig eher etwas
Nobbi.the.Great
Nobbi.the.Great 25.10.2011 um 17:17:25 Uhr
Goto Top
Hi

Finde ich erwähnenswert nett, dass Du deine Zeit dafür aufwendest.

Wenn ich nur wüsste, wie ich die Ergebniss unterscheiden kann, dann würde ich mir schon was basteln.

Evtl. mit Ausgabe in Variable -> dann if Variable "non-existent domain" >nul und if not dann >c:\nslookup.txt.

Wäre das vielleicht ein Weg? Was meinst Du?

Greetz an Alle
Nobbi.the.Great
Nobbi.the.Great 31.10.2011 um 17:31:10 Uhr
Goto Top
Eine mögliche Lösung ist.

findstr Name: c:\nslookup.txt >c:\nslookup-Treffer.txt

Dies am Ende der Batch und ich habe die Treffer sauber aufgelistet.
Skyemugen
Skyemugen 01.11.2011 um 07:43:17 Uhr
Goto Top
Aloha,

... aus den Augen ... naja war eine vollversorgende Woche face-wink

Ich hatte ja verstanden, dass du als Ausgabe

Server:  dns-server.local
Address:  192.168.1.250

Name:    PC1.local
Address:  192.168.1.2
willst und nicht nur die Treffer der Zeilen, die Name enthalten ... (sonst wär' das Ding hier noch einfacher gewesen als zu Husten)

for /L %%s in (1,1,10) do (
	for /f "tokens=1,* delims=:" %%m in ('nslookup %var%.%%s^|findstr /n "^"^|findstr "4: 5:"') do echo %%n>>"c:\nslookup.txt"  
	echo ________________________________>>"c:\nslookup.txt"  
)

Das liefert dir jetzt
Name:    PC1.local
Address:  192.168.1.2
________________________________

greetz André