(modifié le 6 juin 2017 à 0:58)

Comme moi vous écrivez peut-être des scripts bash ou shell, pour les faire tourner sous Debian, Ubuntu, CentOS... et j'en passe.

Par mesure de sécurité il est sage de vérifier que la distribution qui exécute le script correspond à celle pour laquelle le script a été conçu.

En effet, lancer un script prévu pour du RedHat sur une distribution peut faire des chocapics. Dans le meilleur des cas le script ne s'exécutera qu'en partie, dans le pire des cas cela peut aller jusqu'à la perte de données. Il suffit de faire un "rm" sans vérifier que la précédente commande s'est correctement exécuté et paf.

Avec Linux Standard Base

Tester la présence de fichiers tels que ceux-ci est une mauvaise idée :

  • /etc/debian_version
  • /etc/redhat_release

Ubuntu et Debian auront tous deux ce fichier avec le même nom : impossible de les différencier.

Pour connaître la distribution il faut privlégier la commande lsb_release car elle fonctionne à peu près partout (dispo dans les dépôts quand non installée).

Voici 3 fonctions pour détecter Debian, CentOS, Ubuntu mais aussi une version particulière de Debian (jessie) :

is_centos() {
[[ $(lsb_release -d) =~ "CentOS" ]]
return $?
}
is_debian() {
[[ $(lsb_release -d) =~ "Debian" ]]
return $?
}
is_jessie() {
[[ $(lsb_release -c) =~ "jessie" ]]
return $?
}
is_ubuntu() {
[[ $(lsb_release -d) =~ "Ubuntu" ]]
return $?
}

Exemple d'utilisation :

if is_ubuntu; then
echo "ubuntu"
else
echo "pas ubuntu"
fi

Conclusion

Simple et efficace.

Attention à bien respecter la casse si vous ajoutez d'autres distributions ou versions de distribution.

Je suis toujours plus tranquille d'insérer ces contrôles dans les scripts de ma page GitHub, cela m'évite de recevoir des questions inutiles du style "mais ton ton script marche pas" alors qu'il est précisé que ça fonctionne uniquement avec telle distribution 🙂

source : script d'installation openhabian

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter