[英]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.