Frage

Gibt es ein bestehendes Python-Modul, das verwendet werden kann, zu erkennen, welche Distribution von Linux und welcher Version der Distribution zur Zeit installiert ist.

Zum Beispiel:

  • RedHat Enterprise 5
  • Fedora 11
  • Suse Enterprise 11
  • etc ....

Ich kann mein eigenes Modul machen durch Parsen verschiedene Dateien wie / etc / redhat-release, aber ich frage mich, ob ein Modul bereits vorhanden ist?

Cheers, Ivan

War es hilfreich?

Lösung

Sie die Dokumentation für die Plattform-Modul Suchen: http://docs.python.org/library /platform.html

Beispiel:

>>> platform.uname()
('Linux', 'localhost', '2.6.31.5-desktop-1mnb', '#1 SMP Fri Oct 23 00:05:22 EDT 2009', 'x86_64', 'AMD Athlon(tm) 64 X2 Dual Core Processor 3600+')
>>> platform.linux_distribution()
('Mandriva Linux', '2010.0', 'Official')

Andere Tipps

Die obige Antwort funktioniert nicht auf RHEL 5.x Der schnellste Weg ist auf einem RedHat-ähnliches System und Blick auf der / etc / redhat-release-Datei zu lesen. Diese Datei wird jedes Mal aktualisiert Sie ein Update und das System wird durch eine kleinere Versionsnummer aktualisiert.

$ python
>>> open('/etc/redhat-release','r').read().split(' ')[6].split('.')
['5', '5']

Wenn Sie die getrennten Teile herausnehmen es wird nur Sie String geben. Kein Modul wie Sie gefragt, aber ich dachte, es war kurz und elegant genug, dass Sie es nützlich finden können.

Ich habe ein Paket namens distro geschrieben (jetzt durch pip verwendet), die Ziele distro.linux_distribution zu ersetzen. Es funktioniert auf vielen Distributionen, die seltsam oder leere Tupel könnte zurückkehren, wenn platform verwendet wird.

https://github.com/nir0s/distro (distro, auf pypi)

Es bietet eine viel aufwändigere API Verteilung bezogenen Informationen abgerufen werden.

$ python
Python 2.7.12 (default, Nov  7 2016, 11:55:55) 
[GCC 6.2.1 20160830] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import distro
>>> distro.linux_distribution()
(u'Antergos Linux', '', u'ARCHCODE')

By the way, platform.linux_distribution ist in Python 3.7 entfernt werden.

Könnte nicht der beste Weg sein, aber ich verwenden subprocess ‚uname -v‘ auszuführen und dann suchte den Distro Namen in der Ausgabe.

import subprocess
process = subprocess.Popen(['uname','-v'], stdout=subprocess.PIPE)
stdout = process.communicate()[0]
distro = format(stdout).rstrip("\n")

if 'FreeBSD' in distro:
   print "It's FreeBSD"
elif 'Ubuntu' in distro:
   print "It's Ubuntu"
elif 'Darwin' in distro:
   print "It's a Mac"
else:
   print "Unknown distro"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top