Je connais les commandes pour vérifier le nom de la machine Linux s'exécutant sur ma machine. Par exemple:
Ubuntu
cat /etc/version
CentOS
cat /etc/issue
Comment puis-je obtenir la sortie du terminal et comparer pour voir s'il s'agit d'UBUNTU ou de CENTOS et exécuter les commandes suivantes?
apt-get install updates
ou
yum update
Ubuntu 14.04
cat /etc/issue
command-line
bash
scripts
shekhar
la source
la source
Réponses:
Malheureusement, il n’existe aucun moyen sûr d’obtenir le nom de la distribution. La plupart des principales distributions s’orientent vers un système dans lequel elles
/etc/os-release
stockent ces informations. La plupart des distributions modernes incluent également leslsb_release
outils mais ceux-ci ne sont pas toujours installés par défaut. Alors, voici quelques approches que vous pouvez utiliser:Utilisation
/etc/os-release
Utilisez les
lsb_release
outils si disponiblesUtilisez un script plus complexe qui devrait fonctionner pour la grande majorité des distributions:
Analyser les informations de version de
gcc
si installé:CentOS 5.x
CentOS 6.x
Ubuntu 12.04
Ubuntu 14.04
Cela a essentiellement été directement copié à partir de grande @ slm réponse à ma question ici .
la source
<—
Ce n'est pas du tout le cas. Sylvain Pineau , par exemple, a présenté un système simple à une ligne interrogeant de manière fiable le type de plate-forme actuel en passant à Python, préinstallé sur la plupart des plates-formes (y compris Ubuntu). Les scripts shell ne doivent jamais tenter d'interroger manuellement les métadonnées de la plateforme avec des tests de bas niveau non portables du type mis en œuvre dans cette réponse.awk
ou unemawk
autre implémentation fonctionnerait aussi bien.lsb_release
:lsb_release -d | awk -F"\t" '{print $2}' | awk -F " " '{print $1}'
lsb_release -d | awk '{print $3}'
ougrep -oP 'VERSION="\K\S+' /etc/os-release
non, pas besoin du double tuyau pour awk.Vous n'avez pas besoin de bash pour effectuer une telle tâche, et je suggérerais d'utiliser une approche de haut niveau pour éviter de traiter avec des fichiers tels que
/etc/version
et/etc/issue
(je n'ai pas / etc / version sur 13.10).Donc, ma recommandation est d'utiliser cette commande à la place:
plateforme python module de fonctionnera sur les deux systèmes, le reste de la commande vérifiera si Ubuntu est renvoyé par python et exécuté par
apt-get
ailleursyum
.la source
-i
àgrep
peut aider.Voici une réponse simple qui, selon moi, fonctionne dans toutes les versions d'Ubuntu / CentOS / RHEL par la simple présence des fichiers (pas de sécurité intrinsèque, bien sûr, si quelqu'un dépose au hasard / etc / redhat-release sur vos boîtes Ubuntu, etc.):
la source
/etc/lsb-release
existe sur CloudLinux (CentOS) 6.8, donc elle renverra à la foisyum
etapt-get
.Utilisation Chef pour ces tâches. ;-)
Dans Chef, vous pouvez utiliser la
platform?
méthode suivante:Ou:
Ou:
Ou:
la source
lsb_release
,/etc/os-release
), cette solution présente l'inconvénient distinct d'exiger Chef - cadre un poids lourd infrastructure code (CIAF) non installé par défaut sur la plupart des plates - formes et nécessitant l' utilisation de son propre langage spécifique au domaine (DSL). En bref, la plupart des utilisateurs veulent probablement simplement faire confiance à Python , qui est installé par défaut sur la plupart des plates-formes (y compris Ubuntu) et s’interface bien avec les scripts shell.Recherchez Ubuntu dans le nom du noyau:
la source
s'il n'y a que deux distributions, vous pouvez le raccourcir:
En quelque sorte,
yum -v
renvoyer non-zéro dans CentOS alors utilisezwhich
plutôt,bien sûr, vous devriez envisager un scénario s'il n'y en a pas
which
installé.la source
Le script suivant devrait indiquer s'il s'agit d'Ubuntu. Si ce n'est pas le cas et que votre seule autre option est CentOS, vous devriez l'avoir dans une
else
clause:la source
lsb_release
outil, qui devrait lire les mêmes fichiers.lsb_release -i
rapports soitDistributor ID: Ubuntu
ouDistributor ID: CentOS
dans ces cas.Exécuter
/etc/os-release
dans un sous-shell et faire écho à sa valeur:la source
J'utiliserais du python
la source
L’utilisation de cette commande fonctionne dans CentOS, Ubuntu et Debian:
grep "^NAME=" /etc/os-release |cut -d "=" -f 2 | sed -e 's/^"//' -e 's/"$//'
Dans Debian, cela donne
Debian GNU/Linux
, dans Ubuntu, cela donneUbuntu
et dans CentOS, cela donneCentOS Linux
.L'avantage d'utiliser grep, cut and sed au lieu de gawk est clair: gawk n'est pas installé dans Debian par défaut, vous ne pouvez donc pas vous en fier à une boîte de dialogue Debian aléatoire.
la source