2010-08-05 67 views
0

我正在解析客戶日誌,我需要弄清楚他們正在運行的發行版。我無法在他們的系統上運行命令,我擁有的只是日誌。我可以可靠地使用os.version的值來確定Linux發行版嗎?

屬性os.name總是返回Linux,但os.version返回看起來是內核版本的東西?例如,2.6.9-42.0.3.ELsmp或2.6.5-7.283-smp。

出現一些google後,os.version的最後一個字符可以映射到發行版。

以ELsmp或el結尾的值映射到Redhat,只是簡單的smp映射到SUSE。

這是真的,還是我只是在想方設法?

+1

我對這個問題有點困惑。你爲什麼「需要」知道這個?爲什麼你的應用程序不能運行一些外部命令來找出版本?爲什麼你不能問顧客? – 2010-08-05 12:47:08

+0

這是一個很好的問題,我有很多現有的數據不包含明確的方式來確定disto。例如,在SUSE上uname,該字符串不包含對SUSE的任何明顯引用,只是SMP。也許有另一個命令可用,但這會導致分叉外部命令,這可能導致其他問題,路徑和權限。如果我能從常見的java虛擬機屬性中找出disto,我的問題變得更加簡單。乾杯。 – KaizenSoze 2010-08-05 13:14:39

回答

0

只要他們使用發行版特定的內核 - 應用了發行版特定修補程序的香草核,就是如此。 但他們也可能使用完全不同的或自定義的內核,甚至可能是一個香草核心。而且我不確定如果它是虛擬機會發生什麼。這些內核可能以-xen或-openvz或類似的東西結束。 不同的發行版也可能使用相同的內核,這使得它更加困難。

+0

是的,虛擬切片會讓人頭疼,但我不需要完整的映射,對於這些特殊情況,我們會直接詢問客戶並將答案存儲在我們的配置數據庫中。 – KaizenSoze 2010-08-05 13:19:31

0

如果發行版的供應商將自己的補丁應用到內核中,他們通常會在版本號中添加一個標籤以表明它是內核的自定義版本。如果他們只是使用由Linus和朋友編寫的股票內核,那麼通常不會有標籤。

這個標籤甚至可能會在同一個供應商的發行版之間有所不同,否則它們可能會兼容。或者對於不同的發行版可能是相同的。 (最後我看到,Fedora內核沒有「EL」或「el」標籤,但CentOS內核與RHEL具有相同的標籤。)或者,對於某些發行版,它可能根本就不存在。

0

你會得到主要分佈的信息,爲true。但是100%的日誌無法猜測它。

供參考:搜索genericgeneric-pae爲Ubuntu,但你會錯過一些其他。除了-686-amd64之外,Debian沒有具體的結局,但對於其他許多發行版來說,情況必定如此。

+0

目前,我們只支持Redhat和SUSE,但感謝您的支持。 – KaizenSoze 2010-08-05 13:16:16

相關問題