簡體   English   中英

Linux上的Python:在/ etc / hostname中獲取主機名

[英]Python on Linux: get host name in /etc/hostname

在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本身,但本質上依賴於平台的東西在某種程度上是異常的。 謝謝!

嘗試os.uname() 根據文件 ,這是元組返回的第二個位置。

但是,正如文檔本身所述,“獲取主機名的更好方法是socket.gethostname()甚至socket.gethostbyaddr(socket.gethostname()) 。”

主機名的通用源是hostname(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())嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM