2009-12-29 7 views
3

Existe-t-il un module python existant pouvant être utilisé pour détecter quelle distribution de Linux et quelle version de la distribution est actuellement installée.Module Python pour détecter la distribution Linux Version

Par exemple:

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

Je peux faire mon propre module en analysant divers des fichiers comme/etc/redhat-release mais je me demandais si un module existe déjà?

Cheers, Ivan

+0

connexes http://unix.stackexchange.com/questions/92199/how-can-i-reliably-get-the-operating-systems-name –

Répondre

14

Consulter la documentation pour le module de plate-forme: http://docs.python.org/library/platform.html

Exemple:

 
>>> 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') 
+2

Les deux fonctions sont obsolètes –

+0

Pas sûr que c'est uname, mais linux_distribution certainement est, détails -> https://bugs.python.org/issue1322 – wim

2

La réponse ci-dessus ne fonctionne pas sur RHEL 5.x Le moyen le plus rapide est de lire et d'examiner le fichier/etc/redhat-release sur un système de type redhat. Ce fichier est mis à jour chaque fois que vous exécutez une mise à jour et le système est mis à niveau par un numéro de version mineur.

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

Si vous sortez les pièces détachées, cela vous donnera simplement de la ficelle. Aucun module comme vous l'avez demandé, mais je me suis dit que c'était assez court et élégant pour que vous le trouviez utile.

1

J'ai écrit un paquet appelé distro (maintenant utilisé par pip) qui vise à remplacer distro.linux_distribution. Cela fonctionne sur beaucoup de distributions qui pourraient renvoyer des tuples étranges ou vides en utilisant platform.

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

Il fournit une API beaucoup plus complexe pour récupérer des informations liées à la distribution.

$ 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') 

Par ailleurs, platform.linux_distribution doit être supprimé en Python 3.7.

Questions connexes