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

从一个Python脚本中,我试图在Linux中获取主机名。 这是一个Debian GNU / Linux Amazon EC2实例。 我在/etc/hostname设置了正确的名称。 推荐的解决schemesocket.gethostname()不工作:它显示IP加上IP元组。

我search了StackOverflow,没有什么东西出来,例如这里 。 socket.getfqdn()更糟糕:它产生ip-[IP tuple].eu-west-1.compute.internal

我做错了什么,或者有没有干净的解决scheme来获取/etc/hostname ? 当然,备份解决scheme是读取文件etc/hostname本身,但某些内在平台相关的内容太exception了。 谢谢!

试试os.uname() 。 根据文档 ,它是返回的元组中的第二个位置。

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

主机名的通用来源是主机名(1) 。 这个程序调用相当于uname -n

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

首先,所有的信用都应该去m1k3y02,他给了我一个评论的提示。 现在, 为了后代,我会给出正确的答案:我的Amazon EC2很久没有重启过了。 我在/etc/hostname设置了主机/etc/hostname但没有到达系统,如uname -n 。 所以简单地运行/etc/init.d/hostname.sh就行了。 之后, socket.gethostname()按预期工作。

这里的教训是:首先看看系统是否得到它,然后才怪这个语言。

你有没有尝试过socket.gethostbyaddr(socket.gethostname())