我需要模拟一个由交换机连接的n台主机的网络。这方面的最佳工具似乎是小型的。问题是,我需要在每个使用主机名的主机上运行python脚本。skript根据主机名的不同而不同,因此这对我来说非常重要:)
但是主机名似乎在每个主机上都是相同的!示例:
h1主机名
输出“simon”
h2主机名
输出“simon”
“simon”是我的“真正的”底层ubuntu系统的主机名。
我找不到改变主机名的可能性。
这有可能吗?如果是,怎么做?如果没有,为什么不呢?
我读过一些关于迷你的文章,每个主机都使用一个普通的内核。这可能是问题所在吗?
发布于 2015-04-27 12:12:43
我不认为通过在每个主机上运行“主机名”可以得到不同的名称。只有与网络相关的命令才会在不同的主机上产生不同的结果,因为主机运行在分隔的命名空间上。
因此,获得主机名的一种方法可能是运行ifconfig并从接口的名称中对主机名进行整数。
发布于 2017-04-18 14:57:57
最后,我想出了如何做到这一点,首先您需要从程序内部运行"ifconfig“命令并将其存储在一个变量中,其次使用正则表达式re‘获取文本,然后使用它来获取my hosts...you的收件人可以对主机名做同样的操作。
代码: 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])
第一行将从终端获得输出(二进制使用解码以utf-8编码字符串表示)。
第二行将使用正则表达式获取文本中的ip。
第三个将从搜索对象获取ip,并消除有关抓取文本在给定字符串中的位置的信息。
https://stackoverflow.com/questions/28903499
复制相似问题