添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Linux上的Python:在/etc/hostname中获取主机名

10 人关注

我试图从一个Python脚本中获得一个Linux盒子的主机名。这是一个 Debian GNU/Linux Amazon EC2 实例。我已经在 /etc/hostname 中设置了正确的名称。推荐的解决方案 socket.gethostname() 不起作用:它显示ip-加上IP元组。

我在StackOverflow上搜索了一下,没有任何结果,比如说。 here . socket.getfqdn() is even worse: it yields ip-[IP tuple].eu-west-1.compute.internal .

是我做错了什么,还是没有干净的解决方案来获取 /etc/hostname 中的主机名?当然,后备的解决方案是读取文件 etc/hostname 本身,但如此内在地依赖平台的东西,不知为何太反常了。谢谢!

2 个评论
当你做uname -n时,你是否看到了想要的主机名? 如果没有,请尝试执行/etc/init.d/hostname.sh
令人惊奇的是!这就是了。现在 socket.gethostname() 返回正确的主机名。所以,问题只是机器没有被重启,它没有采用新的主机名。如果你想用这些信息来回答这个问题,我会给它加分。
python
linux
ip
alexfernandez
alexfernandez
发布于 2011-11-25
4 个回答
Nate
Nate
发布于 2011-11-25
已采纳
0 人赞同

尝试 os.uname() 。 根据 the doc , it is the second position in the tuple returned.

但是,正如文档本身所述,"获取主机名的更好方法是 socket.gethostname() 甚至是 socket.gethostbyaddr(socket.gethostname()) "。

phihag
phihag
发布于 2011-11-25
0 人赞同

主机名的通用来源是 主机名(1) .这个程序调用了 uname -n 的等价物。

在Python中,你可以使用 platform.node() or os.uname()[1] .

alexfernandez
alexfernandez
发布于 2011-11-25
0 人赞同