[2K/XP] IP-adres achterhalen in .cmd script

Pagina: 1
Acties:

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Ik ben bezig met een cmd.exe scriptje waarvoor ik het IP-adres van een VPN-interface in een variabele wil zetten. Ik krijg het IP-adres wel afgedrukt op één regel met onderstaande opdrachtregel:
code:
1
netsh interface ip show ipaddress | find "Mijn VPN"


De output is dan als volgt:
123.45.123.8     255.255.255.255       1      1500  Mijn VPN


Het IP-adres staat dus aan het begin van de output. Hoe krijg ik de output zover dat ik alleen het IP-adres krijg? In *nix-achtige omgeving zou je awk of sed hiervoor kunnen gebruiken maar het moet nu in cmd.exe zonder extra tools te installeren. Het moet kunnen werken op met standaard Windows 2000/XP commando's.

Ik heb al gekeken naar het gebruik van findstr, maar die toont voor iedere match altijd de hele regel. Iemand suggesties?

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


Verwijderd

ah gelukkig, ik ben niet de enige die vaak met dit soort vraagstukken zit, ik zal even voor je kijken, moet wel mogelijk zijn dacht ik.

Alhoewel na een tijdje gezocht te hebben, denk ik dat je meer resultaat hebt met WMI. Dat werkt ook op elke windows xp en mogelijk ook op win2k pc

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
 
WScript.Echo VbCrLf & "Computer Name: " & strComputer
WScript.Echo " IP Addresses & Subnet Masks"
 
For Each objNicConfig In colNicConfigs
  WScript.Echo VbCrLf & "  Network Adapter " & objNicConfig.Index
  WScript.Echo "    " & objNicConfig.Description & VbCrLf 
  WScript.Echo "    IP Address(es):"
  For Each strIPAddress In objNicConfig.IPAddress
    WScript.Echo "        " & strIPAddress
  Next
  WScript.Echo "    Subnet Mask(s):"
  For Each strIPSubnet In objNicConfig.IPSubnet
    WScript.Echo "        " & strIPSubnet
  Next
Next


cscript en bovenstaandecode.vbs geeft een output, met nog iets teveel info maar dat kun je vast zelf wel ff aanpassen, succes

Bovenstaande code komt van microsoft site btw.

[ Voor 99% gewijzigd door Verwijderd op 24-03-2007 15:11 . Reden: werkt ook op 2k ]


Verwijderd

Voer dit's uit
ip.vbs
code:
1
2
3
4
5
6
7
8
9
10
11
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:" _
 & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNicConfigs = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

For Each objNicConfig In colNicConfigs
  For Each strIPAddress In objNicConfig.IPAddress
    WScript.Echo "" & strIPAddress
  Next
Next


Cscript //Nologo ip.vbs

Doet dan wat je wilt hebben

ff in een nieuwe post gedaan, voor overzicht.

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Dank je voor de oplossing maar ik zoek specifiek iets voor cmd.exe. Ik weet namelijk niets van VBScript. Inmiddels is het gelukt. Even de oplossing voor het geval iemand het ooit nog eens nodig heeft. Ik zat voor iets anders de FOR-syntax te bekijken en zag dat je met FOR ook de output van een commando kan parsen. Om het IP-adres te achterhalen van de VPN interface doe ik nu dit:
code:
1
2
for /f "delims= " %%i in ('netsh interface ip show ipaddress ^| find "VPN"') do @set VPN_IP_ADRES=%%i
@echo %VPN_IP_ADRES%

Dit geeft als output:
123.45.123.8

Precies wat ik nodig had!

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand