【问题标题】:Programmatically adding Static IP's以编程方式添加静态 IP
【发布时间】:2018-04-01 23:09:28
【问题描述】:

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

我根据块号生成子网的函数工作正常,但我希望能够输入 192.168.1.10/29 之类的内容并将所有 5 个 IP 地址添加到 NIC。我添加 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);
}

【问题讨论】:

  • 为您的示例添加哪 5 个地址,192.168.1.10/29?
  • 这是我们的区块 72.26.196.160/29 之一。所以 .162 - .166 将是我需要添加到 NIC 的地址。
  • 既然72.26.196.160/29 包括.161.166 范围内的所有主机作为有效主机,程序如何知道实际范围应该只包括.162.166

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


【解决方案1】:

我创建了一个类,它可以解释子网地址并返回由该子网表示的地址的可枚举集合。因此,例如,ip 子网192.168.1.10/29 应该返回所有在192.168.1.10 之后(包括)在/29 表示的子网中的地址,即掩码255.255.255.248。此子网中有六个有效主机,.9.14。所以返回的列表是

192.168.1.10
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14

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

==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

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

【讨论】:

  • @BrettPowell:只是想跟进一下,您有机会在生产中使用代码吗?它是否按预期工作?
猜你喜欢
  • 1970-01-01
  • 2020-10-06
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 2012-02-29
  • 2021-08-23
  • 2018-04-10
  • 1970-01-01
相关资源
最近更新 更多