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

ale*_*dez 10 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.

我做错了什么,或者没有干净的解决方案来获取主机名/etc/hostname?当然,备份解决方案是读取文件etc/hostname本身,但本质上依赖于平台的东西在某种程度上是异常的.谢谢!

Nat*_*ate 13

试试os.uname().根据文件,这是元组返回的第二个位置.

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


phi*_*hag 7

主机名的通用源是hostname(1).这个程序称为相当于uname -n.

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


ale*_*dez 7

首先,所有的信用都应该转到m1k3y02,他在评论中给了我一些提示.现在,为了后人,我会给出正确的答案:我的Amazon EC2在很长一段时间内没有重新启动.我设置了主机名,/etc/hostname但它没有到达系统,如下所示uname -n.所以简单的跑步/etc/init.d/hostname.sh就行了.之后,socket.gethostname()按预期工作.

这里的教训:首先看看系统是否得到它,只有责备的语言.


Emi*_*dın 5

你试过socket.gethostbyaddr(socket.gethostname())吗?