Linux上的Python:在/etc/hostname中获取主机名
在Python脚本中,我试图在Linux框中获取主机名。它是一个Debian GNU/Linux Amazon EC2实例。我已在Linux上的Python:在/etc/hostname中获取主机名,python,linux,ip,Python,Linux,Ip,在Python脚本中,我试图在Linux框中获取主机名。它是一个Debian GNU/Linux Amazon EC2实例。我已在/etc/hostname中设置了正确的名称。推荐的解决方案socket.gethostname()不起作用:它显示ip加ip元组 我已经搜索了StackOverflow,但没有任何结果,例如socket.getfqdn()甚至更糟:它产生ip-[ip tuple].eu-west-1.compute.internal 是我做错了什么,还是没有干净的解决方案来获取/e
/etc/hostname
中设置了正确的名称。推荐的解决方案socket.gethostname()
不起作用:它显示ip加ip元组
我已经搜索了StackOverflow,但没有任何结果,例如socket.getfqdn()
甚至更糟:它产生ip-[ip tuple].eu-west-1.compute.internal
是我做错了什么,还是没有干净的解决方案来获取
/etc/hostname
中的主机名?当然,备份解决方案是读取文件etc/hostname
本身,但是一些本质上依赖于平台的东西在某种程度上太不正常了。谢谢 您是否尝试过socket.gethostbyaddr(socket.gethostname())?尝试os.uname()
。根据,它是返回的元组中的第二个位置
但是,正如文档本身所述,“获取主机名的更好方法是
socket.gethostname()
甚至socket.gethostbyaddr(socket.gethostname())
”主机名的通用源代码是。此程序调用uname-n
的等价项
在Python中,您可以使用或。首先,所有的功劳都应该归于m1k3y02,他在评论中给了我提示。现在,我将给出正确的答案:我的AmazonEC2已经很久没有重新启动了。我在
/etc/hostname
中设置了主机名,但它没有到达系统,如uname-n
所示。因此,只需运行/etc/init.d/hostname.sh
就可以做到这一点。之后,socket.gethostname()
按预期工作
这里的教训是:首先看看系统是否得到了它,然后再责怪语言。当您取消ame-n时,是否看到了所需的主机名?如果没有,请尝试执行/etc/init.d/hostname.shAmazing!就这样。现在
socket.gethostname()
返回正确的主机名。所以问题是机器没有重新启动,也没有使用新的主机名。如果你想用这些信息回答这个问题,我会投你一票。