55 votes

Comment savoir si la plateforme en cours d'exécution est Ubuntu ou CentOS à l'aide d'un script de Bash ?

Je connais les commandes pour vérifier le nom de la machine Linux qui tourne 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 si c'est UBUNTU ou CENTOS et exécuter les commandes suivantes ?

apt-get install updates 

o

yum update

Ubuntu 14.04

cat /etc/issue

0voto

Ville Laitila Points 111

L'utilisation de cette commande fonctionne sous 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 donne Ubuntu et dans CentOS, cela donne CentOS Linux .

L'avantage d'utiliser grep, cut et sed au lieu de gawk est clair : Debian n'a pas gawk installé par défaut, vous ne pouvez donc pas compter sur lui sur une boîte Debian aléatoire.

-1voto

wuseman Points 99

Awk est supporté sur presque tous les systèmes nix, cela devrait donc suffire pour ne pas avoir à se soucier de tous les outils.

#!/bin/bash

DISTRO="$(awk -F= '/^NAME/{print tolower($2)}' /etc/os-release|awk 'gsub(/[" ]/,x) + 1')"

[[ "${DISTRO}" = "gentoo" || "${DISTRO}" = "ubuntu" ]] && \
awk 'BEGIN{print "'${DISTRO}'"}' || \
awk 'BEGIN{print "Unknown distro..."}'

Perl

#!/usr/bin/perl
use Linux::Distribution qw(distribution_name);
if(my $distro = distribution_name) { print "Distro: $distro\n"; } else { print "Unkown distro...n\n";}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X