2

我需要模拟一个由交换机连接的 n 个主机的网络。完美的工具似乎是 mininet。问题是我需要在每个使用主机名的主机上运行一个 python 脚本。脚本的行为因主机名而异,所以这对我来说非常重要:)

但是每个主机的主机名似乎都相同!例子:

h1 主机名

输出“simon-pc”

h2 主机名

输出“simon-pc”

“simon-pc”是我的“真实”底层 ubuntu 系统的主机名。

我找不到更改主机上的主机名的可能性。

这甚至可能吗?如果是,如何?如果没有,为什么不呢?

我读到了 mininet 为每个主机使用一个通用内核。这可能是问题吗?

4

2 回答 2

1

我认为您不能通过在每个主机上运行“主机名”来获得不同的名称。只有与网络相关的命令才会在不同的主机上产生不同的结果,因为主机运行在不同的命名空间上。

因此,获取主机名的一种方法可能是运行 ifconfig 并从接口名称中解释主机名。

于 2015-04-27T12:12:43.757 回答
1

我终于知道怎么做了我的主机...您可以对主机名执行相同的操作

代码: getip(): ifconfig_output=(subprocess.check_output('ifconfig')).decode() ip=re.search(r".\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ifconfig_output) return((str(ip))[47:-2])

第一行将从终端获取输出(二进制使用 decode 以 utf-8 编码字符串表示)

第二行将使用正则表达式获取文本中的 ip

第三个将从搜索对象中获取 ip 并消除有关获取的文本在给定字符串中的位置的信息

于 2017-04-18T14:57:57.983 回答