标题: [网络连接] 请教在多网卡的服务器里对其中一个插网线的网卡配置指定公网IP的批处理写法 [打印本页]
作者: yangjiangh 时间: 2020-4-2 00:40 标题: 请教在多网卡的服务器里对其中一个插网线的网卡配置指定公网IP的批处理写法
请教在多网卡的服务器里对其中一个插网线的网卡配置指定公网IP的批处理写法(需要设置的IP直接写在bat中)
请教各位兄弟一个问题,我想搞一个批处理文件能自动设置服务器(电脑)中插了网线的网卡的IP,比如说服务器有4个网卡其中只有一个网卡或2个网卡是插了网线,只需要对其中一个插了网线的网卡自动设置IP(网关和子网掩码、DNS)。IP(网关和子网掩码,DNS)直接写到批处理文件中,不需要在执行批处理文件的时候手动输入任何信息(IP\网\子网掩码\DNS)。
需要这样做是因为机房的服务器有多个网卡,有时候其中一个网卡插了网线或是2个网卡插了网线,如果是2个或以上网卡插了网线,也只用对其中一个插了网线的网卡设置IP就可以了。如果能实现对其中一个插了网线的网卡配置IP(需要判断哪些网卡插了网线,并过滤掉没插网线的网卡),我就可以封装一个自己常用的系统(如WIN2012R2,将批处理文件打包到GHO文件中去,并设置自动任务登陆时自动执行,达到对插了网线的网卡自动设置公网IP的目的),这样对服务器安装新系统我不需要去机房现场操作,只用远程登陆原服务器GHOST还原新封装的系统,就可以对服务器插了网线的网卡自动设置我自己想要的公网IP,服务器就可以直接连通网络了。
谢谢各位了
作者: yangjiangh 时间: 2020-4-2 01:39
有的服务器是1个网卡 有的服务器是2个网卡 有的服务器是4个网卡 可能只有一个网卡插了网线 也有可能是2个网卡插了网线 只用对其中一个插了网线的网卡设置IP就可以了
网卡名称可能是 本地连接 “本地连接 2” “以太网” “以太网 2”… 或许是其他名称
作者: flashercs 时间: 2020-4-2 05:38
本帖最后由 flashercs 于 2020-4-2 10:19 编辑
- @echo off
- REM 新IP地址/前缀
- set "newip=192.168.0.33"
- REM 设置子网掩码
- set "netmask=255.255.255.0"
- REM 设置网关
- set "gateway=192.168.0.254"
- REM 设置DNS Sever1
- set "dnsserver1=114.114.114.114"
- REM 设置DNS Sever2
- set "dnsserver2=202.102.152.3"
-
- for /f "tokens=*" %%A in ('wmic nic where "NetEnabled='TRUE'" get NetConnectionID /value^|find "="') do set %%A
- echo.NetConnectionID="%NetConnectionID%"
- REM 设置IP
- echo.开始设置IP...
- netsh interface ipv4 set address "%NetConnectionID%" static "%newip%" "%netmask%" "%gateway%"
- echo.设置IP完成
- REM 设置DNS
- echo.开始设置DNS1...
- netsh interface ipv4 set dnsservers "%NetConnectionID%" static "%dnsserver1%"
- echo.设置DNS1完成
- echo.开始设置DNS2...
- netsh interface ipv4 add dnsservers "%NetConnectionID%" "%dnsserver2%" 2
- echo.设置DNS2完成
- exit /b
复制代码
作者: yangjiangh 时间: 2020-4-3 03:18
自己研究了下,通过判断NetEnabled=TRUE这个不通用,在WIN2012R2和WIN2016系统中并没有这个值。
改为判断NetConnectionStatus=2- @echo off
- set "newip=192.168.16.139"
- set "netmask=255.255.255.0"
- set "gateway=192.168.16.1"
- set "dnsserver1=8.8.8.8"
- set "dnsserver2=8.8.4.4"
- for /f "tokens=*" %%A in ('wmic nic where "NetConnectionStatus='2'" get NetConnectionID /value^|find "="') do set %%A
- echo NetConnectionID="%NetConnectionID%"
- echo 开始设置IP...
- netsh interface ip set address name="%NetConnectionID%" static "%newip%" "%netmask%" "%gateway%" 0
- echo 设置IP完成
- echo 开始设置DNS1...
- netsh interface ip set dns name="%NetConnectionID%" static "%dnsserver1%" primary
- echo 设置DNS1完成
- echo 开始设置DNS2...
- netsh interface ip add dns name="%NetConnectionID%" "%dnsserver2%" index=2
- echo 设置DNS2完成
- for /f "tokens=*" %%A in ('wmic nic where "NetConnectionID='%NetConnectionID%'" get index /value^|find "="') do set %%A
- echo index="%index%"
- wmic nicconfig where index="%index%" call SetTcpipNetbios 2
- del %0
- exit /b
复制代码
作者: yangjiangh 时间: 2020-4-3 06:24
后面发现一个问题,有的服务器netsh interface ip 不生效,可能是服务器做有优化或一些权限设置引起的,改为如下批处理:- @echo off
- set "newip=192.168.16.139"
- set "netmask=255.255.255.0"
- set "gateway=192.168.16.1"
- set "dns1=8.8.8.8"
- set "dns2=8.8.4.4"
- for /f "tokens=*" %%A in ('wmic nic where "NetConnectionStatus='2'" get NetConnectionID /value^|find "="') do set %%A
- echo NetConnectionID="%NetConnectionID%"
- for /f "tokens=*" %%A in ('wmic nic where "NetConnectionID='%NetConnectionID%'" get index /value^|find "="') do set %%A
- echo index="%index%"
- wmic nicconfig where index="%index%" call enablestatic("%newip%"),("%netmask%")
- wmic nicconfig where index="%index%" call setgateways("%gateway%"),(1)
- wmic nicconfig where index="%index%" call SetDNSServerSearchOrder("%dns1%","%dns2%")
- wmic nicconfig where index="%index%" call SetTcpipNetbios 2
- exit /b
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |