您的位置:首页 > 其它

根据MAC地址修改固定IP(附带IP&MAC扫描脚本)

2013-03-27 11:31 375 查看

因公司重新规划网络,以前的固定IP需重新分配,又不想一台台的去改,那个不是一般的累。用DHCP又不符合公司环境,所以就搞了这么个脚本出来。

一、VBS脚本,通过MAC地址来修改IP、子网掩码、网关和DNS.

'by Winters 2013-3-27 www.yltech.net

'为防止修改未成功而IP冲突,先修改IP获取为自动获取IP地址

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colNetAdapters = objWMIService.ExecQuery _

("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each objNetAdapter In colNetAdapters

errEnable = objNetAdapter.EnableDHCP()

errDNS = objNetAdapter.SetDNSServerSearchOrder(null)

Next
'取得本机器的网卡物理地址: MacAddress

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

Set objNic = objWMIService.Get _

("Win32_NetworkAdapter.DeviceID=" & objNicConfig.Index)
'本机器的网卡物理地址写入变量 : strMacAddress

strMacAddress = objNic.MACAddress
Next
'读取配置文件,这里需要有个IPlist.txt,最好是用绝对地址

Set fso = CreateObject("Scripting.filesystemobject")

Set fr = fso.OpenTextFile("iplist.txt", 1)

Do While fr.AtEndOfStream <> True

t = UCase(fr.ReadLine)

If InStr(t, strMacAddress) Then

t = Split(t, "|")

Name = t(0)

IPAddress = t(2)

Exit Do

End If

Loop
'修改IP地址

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colNetAdapters = objWMIService.ExecQuery _

("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

strIPAddress = Array(IPAddress)

strSubnetMask = Array("255.255.255.0")

strGateway = Array("192.168.0.1")

strGatewayMetric = Array(1)

strDNS = Array("192.168.0.1","192.168.0.2")
For Each objNetAdapter in colNetAdapters

errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)

errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)

errDNS = objNetAdapter.SetDNSServerSearchOrder(strDNS)
Next
以上为VBS脚本部分,有同样需求的要根据自己的情况做些修改
一、IP&MAC扫描。以下为脚本:

@echo off&title 扫描MAC,IP,计算机名&color a&mode con: cols=60 lines=22

setlocal enabledelayedexpansion

echo.

echo ============== 制作者:http://www.yltech.net ===============

echo.

echo 扫描计算机名、MAC地址和内网IP,并保存到iplist.txt文件

echo.

echo ================== 制作不易,请保留版权 ==================

echo.

:: iqp -> 内网IP的前3位,ip1 -> 起始ip,ip2 -> 结束ip

set ipq=192.168.0

set /a ip1=1

set /a ip2=10

set /a con=0

set /a contotal=%ip2%-%ip1%+1

echo PCName MACAddress IPAddress >iplist.txt

for /l %%i in (!ip1!,1,!ip2!) do (

set ip=!ipq!.%%i

echo 扫描!ip!

ping !ip! -n 1 -w 1 >nul

if !errorlevel! equ 0 (

for /f "tokens=1" %%j in ('nbtstat -a !ip! ^| find /i "UNIQUE" ^| find /i "00"') do set pcname=%%j

for /f "tokens=4 delims=* " %%j in ('nbtstat -a !ip! ^| find /i "MAC Address"') do set mac=%%j

echo !pcname!;!mac:~0,-1!;!ip! >>iplist.txt

set /a con=!con!+1

)

)

echo 共%con%条记录

echo 共扫描:%contotal%台机器,扫描到:%con%个有效记录&pause >nul
1、修改脚本中IPQ(网段)\IP1(起始IP)和IP2(结束IP)

2、修改生成的iplist.txt文件,每行有两处需修改。第一是修改间隔符“;”为“|”,第二是修改获取的MAC地址中间的分隔符“-”为“:”另外可以的话清除IP地址后面的那个空格。

我个人博客也有一份http://www.yltech.net/2013/03/macipipmac.html,可能是我不会操作,贴上来的代码缩进位都没了。转到这里来了传一份附件吧。本文出自 “@Win” 博客,请务必保留此出处http://winterscn.blog.51cto.com/167048/1163453
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: