Saya tahu perintah untuk memeriksa nama mesin Linux yang berjalan di mesin saya. Sebagai contoh:
Ubuntu
cat /etc/version
CentOS
cat /etc/issue
Bagaimana cara mendapatkan output dari terminal dan membandingkan untuk melihat apakah itu adalah UBUNTU atau CENTOS dan melakukan perintah berikut?
apt-get install updates
atau
yum update
Ubuntu 14.04
cat /etc/issue
command-line
bash
scripts
shekhar
sumber
sumber
Jawaban:
Sayangnya, tidak ada cara yang pasti dan sederhana untuk mendapatkan nama distribusi. Sebagian besar distro besar sedang bergerak menuju sistem tempat mereka menggunakannya
/etc/os-release
untuk menyimpan informasi ini. Sebagian besar distribusi modern juga menyertakanlsb_release
alat tetapi ini tidak selalu diinstal secara default. Jadi, berikut adalah beberapa pendekatan yang dapat Anda gunakan:Menggunakan
/etc/os-release
Gunakan
lsb_release
alat jika tersediaGunakan skrip yang lebih rumit yang berfungsi untuk sebagian besar distro:
Pisahkan info versi
gcc
jika terpasang:CentOS 5.x
CentOS 6.x
Ubuntu 12.04
Ubuntu 14.04
Ini pada dasarnya telah disalin langsung dari jawaban bagus @ slm untuk pertanyaan saya di sini .
sumber
<—
Ini bukan masalahnya sama sekali. Sylvain Pineau , misalnya, menunjukkan satu-liner sepele andal menanyakan jenis platform saat ini dengan menunda ke Python - yang datang diinstal pada kebanyakan platform (termasuk Ubuntu). Skrip Shell tidak boleh mencoba untuk melakukan query metadata platform secara manual dengan level rendah, tes non-portabel dari jenis yang diterapkan dalam jawaban ini.awk
ataumawk
atau implementasi lain akan bekerja dengan baik.lsb_release
:lsb_release -d | awk -F"\t" '{print $2}' | awk -F " " '{print $1}'
lsb_release -d | awk '{print $3}'
ataugrep -oP 'VERSION="\K\S+' /etc/os-release
, tidak perlu untuk pipa ganda awk.Anda tidak perlu bash untuk melakukan tugas seperti itu, dan saya sarankan menggunakan pendekatan tingkat tinggi untuk menghindari berurusan dengan file seperti
/etc/version
dan/etc/issue
(saya tidak punya / etc / versi pada 13.10).Jadi rekomendasi saya adalah menggunakan perintah ini sebagai gantinya:
Modul platform python akan bekerja pada kedua sistem, sisa perintah akan memeriksa apakah Ubuntu dikembalikan oleh python dan menjalankan yang
apt-get
lainyum
.sumber
-i
kegrep
dapat membantu.Inilah jawaban sederhana yang saya temukan berfungsi di semua versi Ubuntu / CentOS / RHEL hanya dengan kehadiran file (tentu saja tidak aman tentunya jika seseorang secara acak menjatuhkan / etc / redhat-release di kotak Ubuntu Anda, dll):
sumber
/etc/lsb-release
ada di CloudLinux (CentOS) 6.8 sehingga akan mengembalikan keduanyayum
danapt-get
.Gunakan Chef untuk tugas-tugas ini. ;-)
Di Chef, Anda dapat menggunakan
platform?
metode ini:Atau:
Atau:
Atau:
sumber
lsb_release
,/etc/os-release
), Solusi ini memiliki kelemahan yang berbeda yaitu membutuhkan Chef - kerangka Infrastruktur berat sebagai Kode (IaC) kerangka kerja yang tidak dipasang secara default pada sebagian besar platform dan membutuhkan penggunaan bahasa spesifik domain (DSL) -nya sendiri. Singkatnya, sebagian besar pengguna mungkin hanya ingin menunda untuk Python , yang adalah terinstal secara default pada kebanyakan platform (termasuk Ubuntu) dan interface baik dengan shell scripting.Periksa Ubuntu dengan nama kernel:
sumber
jika hanya ada dua distro, maka Anda dapat membuatnya lebih pendek:
entah bagaimana
yum -v
mengembalikan non-nol di CentOS jadi gunakanwhich
saja,tentu saja Anda harus mempertimbangkan skenario jika tidak ada yang
which
diinstal.sumber
Skrip berikut harus memberi tahu apakah itu Ubuntu. Jika tidak dan satu-satunya opsi lain yang Anda miliki adalah CentOS, Anda harus memilikinya dalam
else
klausa:sumber
lsb_release
alat, yang seharusnya membaca file yang sama.lsb_release -i
melaporkan salah satuDistributor ID: Ubuntu
atauDistributor ID: CentOS
dalam kasus ini.Jalankan
/etc/os-release
di sub shell dan gema nilainya:sumber
Saya akan menggunakan python
sumber
Menggunakan perintah ini berfungsi di CentOS, Ubuntu dan Debian:
grep "^NAME=" /etc/os-release |cut -d "=" -f 2 | sed -e 's/^"//' -e 's/"$//'
Di Debian ia menghasilkan
Debian GNU/Linux
, di Ubuntu menghasilkanUbuntu
dan di CentOS menghasilkanCentOS Linux
.Keuntungan menggunakan grep, cut, dan sed bukan gawk sudah jelas: Debian tidak memiliki gawk yang terinstal secara default, jadi Anda tidak bisa bergantung padanya pada kotak Debian acak.
sumber