毕设中遇到一个问题是需要在输出的结果文件以当前运行脚本的主机命名。本以为可以轻易的使用 hostname 或者python中的 socket.gethostname() 方法来获取,但是运行后发现并非如此:
mininet> h19 hostname ubuntu
即使在mininet环境下,使用linux的 hostname 命令返回的也是本地主机的主机名称,而 socket.gethostname() 也同样。
我的解决方法是通过解析 ifconfig 命令的输出来得到当前主机名,代码如下:
#Get the hostname inf_line = os.popen("ifconfig").readlines()[0] inf_pattern = re.compile(r‘h[0-9]*-eth0‘) inf = inf_pattern.search(inf_line).group() hostname = inf[0:len(inf)-5]
这段代码首先使用ifconfig返回结果的第一行来得到 hX-eth0 形式的接口字符串,然后再将后面的eth0后缀去掉即是我们需要的主机名称。
时间: 2024-12-25 14:39:14