Jump to content

IP-Adressen aus DNS in Variablen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hi!

 

In einem Startscript müssen mehrere hosts in DNS aufgelöst werden und eine route hinzugefügt werden.

 

Wie bekomme ich die Ausgabe von

nslookup hostname

derart verarbeitet, dass für jede zurückgegebene IP-Adresse eine Route gesetzt werden kann?

 

Oder gibt es dazu eine bessere Lösung?

 

Dank vorab

 

dIbI

 

 

PS: Hab leider zu wenig Erfahrung mit cmd-scripten :-(

Link zu diesem Kommentar

Weil der Client eine VPN eines Drittanbieters herstellt. Darüber geht dann der Internettraffic. Das soll aber für ein paar Domains nicht sein (zB PayPal* sperrt sonst unheimlich gerne Konten *grrr*), da sonst andere VPN-Verbindungen ebenfalls über den Weg wandern, was die Latenz weiter erhöht.

Da nun die betroffenen Domains scheinbar häufig die IPs ändern, soll das Script das dynamisch machen.

 

 

*) laut Aussage Kundendienst lässt sich dieser "Schutz" nicht deaktivieren

Link zu diesem Kommentar

Hallo,

 

hier ein Beispiel für eien anderen Fall:

 

for /f %%j in ('\\1Server\1getsid\psgetsid') do set sid=%%j

 

In der For-Schleife mit Textiteration wird ein Befehl (hier psgetsid) ausgeführt, dessen Ausgabe landet in %%j, wird mit set nach sid geschrieben. Die Schleife arbeitet alle Zeilen einer Ausgabe ab, so das bei einem mehrzeigen Ergebnis nach Schleifenende nur das letzte Ergebnis verbleibt. U.U. ist kann es also nötig sein, die Schleife bedingt vorzeitig zu beenden.

Link zu diesem Kommentar

Ein weiters Beispiel:

 

set store=%1

for /f "Tokens=10" %%i in ('ipconfig /all ^|find "Physikalische"') do set mac=%%i

set mac=%mac:-=%
set mac=%mac: =%
echo %mac%

set computername=%computername: =%

for /f "tokens=1-2" %%i in (\\1Server\getMAC\%store%) do if %%i%%j equ %computername%%mac% exit

echo %computername% %mac% >> \\1Server\getMAC\%store%

rem if %computername% equ HL300-03 pause

rem pause

 

Mit dem Befehl find kann man gezielt nach einem Schüsselwort in einer Zeile suchen, mit tokens gezielt einen Block auswählen oder mehrere. Die Ausgabe erfolgt nur für die Zeile mit dem Schlüsselwort, man braucht keinen Abbruch konstruieren.

Link zu diesem Kommentar

Hier weiter Beispiele:

 

set store=%1

for /f "tokens=*" %%i in ('systeminfo ^|find "Hostname:"') do set Host=%%i & goto :Host
:Host
echo %Host%
set Host=%Host: =%
rem set Host=%Host:Hostname:=%
echo %Host%

for /f "tokens=*" %%i in ('systeminfo ^|find "Systemmodell:"') do set Modell=%%i & goto :Modell
:Modell
echo %Modell%
set Modell=%Modell: =%
set Modell=%Modell:Systemm=M%
echo %Modell%

for /f "tokens=*" %%i in ('systeminfo ^|find "Gesamter physikalischer Speicher:"') do set RAM=%%i & goto :RAM
:RAM
set RAM=%RAM:Gesamter physikalischer Speicher=RAM%
set RAM=%RAM: =%
echo %RAM%

for /f "tokens=1-3" %%i in (\\1Server\InvestigateRAM\%store%) do if %%i%%j%%k equ Hostname:%Computername%%Modell%%RAM% exit

echo %Host% %Modell% %RAM% >> \\1Server\InvestigateRAM\%store%

Link zu diesem Kommentar

Hoi!

 

Danke für die Inputs!

 

Habe mit einer Kombination aus dig (gooooooooogle sei dank) und der for-find-Kombi eine funktionierende Lösung gestrickt.

 

Für alle, die's haben wollen:

 

AddRoute.cmd


@echo off
if "%1"=="" goto error

echo Setting route for %1
echo.
for /f "tokens=1-5" %%i in ('"host %1 dd-wrt | find /i "has address""') do "AutoRouteIP.cmd" %%l >nul
echo.

goto end

:error
echo !!!No domain name given!!!
:end

addrouteip.cmd

@echo off
echo Adding route to %1
route add %1 mask 255.255.255.255 10.205.5.1 metric 1 if 8

 

Evtl sind individuelle Anpassungen nötig.

 

Grüße

 

 

EDIT sagt: Ja, es reicht auch einfach Token=4

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...