我需要模拟一个网络,其中有n台主机通过交换机连接。对此的完美工具似乎是mininet。问题是我需要在每个使用主机名的主机中运行python脚本。根据主机名,skript的行为会有所不同,所以这对我来说非常重要:)
但主机名似乎在每个主机中都是一样的!例如:
h1主机名
输出“simon-pc”
h2主机名
输出“simon-pc”
“simon-pc”是我的“真实”底层ubuntu系统的主机名。
我发现无法更改主机上的主机名。
这甚至可能吗?如果是,怎么样?如果不是,为什么不呢?
我为每个主机使用一个通用内核阅读mininet。这可能是问题吗?
答案 0 :(得分:1)
我认为您不能通过在每台主机上运行“hostname”来获得不同的名称。只有与网络相关的命令才会在不同的主机上产生不同的结果,因为主机在不同的命名空间上运行。
因此,获取主机名的一种方法是运行ifconfig并从接口名称中解释主机名。
答案 1 :(得分:1)
我终于弄清楚如何去做,首先你需要运行" ifconfig "从程序内部命令并将其存储在变量中,然后使用正则表达式' re'抓住文本,我用它来抓住我主机的收件人......你可以为主机名做同样的事情
<强>码强>
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编码字符串表示)
第二行将使用正则表达式
获取文本中的ipThe Third将从搜索对象中获取ip并消除有关给定字符串中抓取文本位置的信息