批处理程序修改网卡配置

背景

现有一些计算机的网卡,ip、网关、DNS均为动态分配。为强化管理,按指定的MAC设定成静态的IP、网关、DNS。由于计算机数量众多,采用批处理方式执行。

方法

1,设计一个配置清单,定义MAC地址和配置信息的映射。示例如下。

对应的栏位分别为:MAC,IP,  子网掩码,网关、主DNS、次DNS

MAC1    10.XX.XX.XX    255.X.X.0    10.XX.XX.1    10.X.0.1    10.XX.X.X
MAC2    10.XX.XX.XX    255.X.X.0    10.XX.XX.1    10.X.0.1    10.XX.X.X
MAC3    10.XX.XX.XX    255.X.X.0    10.XX.XX.1    10.X.0.1    10.XX.X.X

注:

可以将网卡用符合-分隔,以便程序简化。此配置信息MAC的格式没有分隔符-

 2,基于此逻辑,设计程序如下。此程序将在单台服务器上执行。

@echo off
call 0-proc-chcp-to-65001.bat
setlocal EnableDelayedExpansion

rem config file format of each line:mac ip mask gateway dns1 dns2
set /a mac_matched_count=0
set config_file=%~1
if not exist %config_file% (
	echo config file does not exist. program exit.
	goto :End
)


rem get the actual interface card, then search the matched info in config file, and set it.
for /f "tokens=1,3 delims=," %%i in ('getmac /v /fo csv /nh') do (
	set connect_name=%%i
	set act_mac_addr=%%j
	set connect_name=!connect_name:"=!
	set act_mac_addr=!act_mac_addr:"=!
	set act_mac_addr=!act_mac_addr:-=!
			
	rem line content: mac ip mask gateway dns1 dns2
	for /f "tokens=1,2,3,4,5,6 delims=	 " %%k in (!config_file!) do (
		set mac=%%k
		set ip=%%l
		set mask=%%m
		set gateway=%%n
		set dns1=%%o
		set dns2=%%p
		
		set ip_pattern=!ip:~0,5!
		if /i "!act_mac_addr!" equ "!mac!" (	
			set /a mac_matched_count+=1
			
			netsh interface ip set address "!connect_name!" static !ip! !mask! !gateway!
			netsh interface ip set dns "!connect_name!" static !dns1! primary
			netsh interface ip add dns "!connect_name!" static !dns2!
			
			echo mac_addr: !act_mac_addr!, connect_name: !connect_name! has been set successfully.
			goto :End
		)		
	)
)

if !mac_matched_count!==0 (echo no matched network interface)

:End

程序基本逻辑说明:

1,循环查找本机的网卡MAC信息。

2,对查出来的每一条MAC地址,和配置清单文件逐条进行比对。

3,如果比对成功,则按定义的信息进行配置。

注:

1,这个文件仅在单台服务上执行。如果要在多台执行,思路是将此脚本程序(需略加修改)和配置清单自动发送到远程服务器,执行后删除便可。

2,0-proc-chcp-to-65001.bat的内容参考:.NET程序集版本搜索分析

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值