gpt4 book ai didi

windows - 从 ipconfig 获取 MAC 和 DHCP 服务器

转载 作者:可可西里 更新时间:2023-11-01 09:27:53 25 4
gpt4 key购买 nike

我正在 WinPE 环境中编写脚本,我想在其中找到我的 PXE 服务器并将我的 MAC 地址发送给它以检索配置脚本。

这是我必须处理的事情:

  • 服务器将有多个网络适配器。只有一个连接到我的 PXE 服务器。
  • PXE 服务器始终也是该网络上的 DHCP 服务器。
  • 可能有其他 DHCP 服务器连接到其他 NIC。
  • PXE 服务器也在监听端口 80。
  • cURL 在 WinPE 图像中可用。

我希望脚本的最后一行是:

curl -s -o %TEMP%/setup.cmd http://%PXE_IP%/cblr/svc/op/script/system/%MY_MAC%/?script=setup.cmd

我看到我从 ipconfig/all 获得了所有必要的信息,但我不知道如何解析该输出。

比如我可以做

for /f "tokens=15 delims= " %%X in ('ipconfig /all ^| find "DHCP Server"') do echo %%X

这为我提供了每个适配器上 DHCP 服务器的 IP 地址。我可以确定哪个是正确的。但是然后呢?我需要该适配器的相应 MAC 地址。该信息在输出中,但我用 find 将其丢弃。

最佳答案

如果可能的话,我会在 WinPE 上使用 wmic 而不是 ipconfig。

获取所有事件接口(interface)

wmic nic where NetConnectionStatus=2 get InterfaceIndex, MACAddress,NetConnectionID /format:csv

MyComputer, 13, 40:47:40:4D:42:4C,Wireless Network Connection
MyComputer, 58, 00:50:56:C2:20:01,VMware Network Adapter VMnet1

然后你只需要将它与每个 InterfaceIndex 的 dhcp-server 结合起来

wmic nicconfig get InterfaceIndex,DHCPServer /format:csv

MyComputer,10.0.0.1, 13
MyComputer,, 58

要获取数据,您可以使用类似这样的东西

@echo off
setlocal EnableDelayedExpansion
REM *** Delete all previous variables beginning with "nic_"
for /F "delims==" %%V in ('set nic[ 2^> nul') do set "%%V="

for /F "skip=2 tokens=1-4* delims=," %%1 in ('"wmic nic where NetConnectionStatus=2 get InterfaceIndex, MACAddress,NetConnectionID,Status /format:csv"') do (
echo DEBUG: "%%4",%%2,%%3
set "nic[%%2].mac=%%3"
)

for /F "skip=2 delims=" %%L in ('"wmic nicconfig get InterfaceIndex,DHCPServer,IPAddress /format:csv"') do (
set "line=%%L"
set "line=""!line:,=,"!"" --- Pump up the csv line with quotes to avoid empty columns col1,,col2 transformed to "col1","","col3"
for /F "tokens=1-4* delims=," %%1 in ("!line!") do (
if "%%~2" NEQ "" (
set nic[%%~3].dhcpServer=%%~2
)
)
)

set nic

输出:

nic[13].dhcpServer=10.0.0.1
nic[13].mac=40:47:40:4D:42:4C
nic[58].mac=00:50:56:C2:20:01

顺便说一句。我有点作弊,因为我总是获取一个我不需要的额外列,但这是为了避免这个问题,最后一列以 CR 字符结尾。

关于windows - 从 ipconfig 获取 MAC 和 DHCP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com