以编程方式添加静态IP

时间:2012-04-03 23:02:09

标签: .net c#-4.0 windows-server-2008 ip netsh

我正在编写一个小应用程序来自动化我们在设置新机器时每天要做的很多事情。我现在设置了18个新盒子,所以我真的需要添加这个小功能,这样我就可以更轻松地添加IP地址。

我根据块编号生成子网的功能工作正常,但我希望能够输入类似于192.168.1.10/29的内容并将其添加到NIC的所有5个IP地址。我添加IP的功能很好,但我的问题是......

我是否需要像这样手动编码? (显然是伪代码而不是工作示例)

int 29block = 5
int 28block = 12

for (i = 0; i<29block; i++)
{
     string ip = ipinputbox.text;
     ip = ip + 2 + i; // 2 being the value to compensate for gateway/etc.
     AddIpAddress(ip);
}

enter image description here

1 个答案:

答案 0 :(得分:0)

我已经启动了一个可以解释子网地址并返回该子网所代表的地址的可枚举集合的类。因此,例如,ip子网192.168.1.10/29应返回192.168.1.10之后的/29之后的所有地址,这些地址位于由255.255.255.248表示的子网中,即掩码.9。此子网中有六个有效主机.14192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 。所以返回的列表将是

==192.168.1.10/29==
192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
==72.26.196.160/29==
72.26.196.161
72.26.196.162
72.26.196.163
72.26.196.164
72.26.196.165
72.26.196.166

以下是使用(在LINQPad中)的示例代码:http://pastebin.com/d6EE2bpj,以及测试代码生成的示例输出:

{{1}}

代码根据子网大小动态生成位掩码,因此对于任何起始IP地址和任何子网大小,它应该是完全通用的。