שאלה איזו גירסה של RHEL אני משתמש?


מהמעטפת וללא הרשאות שורש, כיצד אוכל לקבוע איזו גירסה של Red Hat Enterprise Linux פועלת?

באופן אידיאלי, אני רוצה לקבל את גירסת ההפצה העיקרית והמשנית, לדוגמה RHEL 4.0 או RHEL 5.1, וכו '.


142
2017-12-01 01:59






תשובות:


אתה יכול להשתמש lsb_release הפקודה על הפצות לינוקס שונים:

lsb_release -i -r 

זה יגיד לך את ההפצה ואת הגירסה הוא קצת יותר מדויק מאשר לגשת לקבצים שייתכן או לא השתנה על ידי מנהל או חבילת תוכנה. כמו גם עבודה על פני מספר רב של distros.

עבור RHEL, עליך להשתמש ב:

cat /etc/redhat-release

144
2017-12-01 06:47



הפקודה לא נמצא שלי CentOS 5.4 תיבת :( - gbjbaanb
@gbjbaanb: זה מוזר בדקתי אותו על התקנה מינימלית 5.4 טרי זה עבד בסדר גמור ... - Zypher
lsb_release -i -r -bash: lsb_release: הפקודה לא נמצאה. למרות זאת, cat /etc/redhat-release Red Hat Enterprise Linux Server 5.6 (Tikanga) - Tom
רק בשביל הרשומה: לא עובד על התקנה מינימלית של RHEL 6.5. פיקוד lsb_release אינו נמצא בשום מקום. - sborsky
lsb_release הוא לא קל משקל החבילה, זה מושך ב CUPS לספק '/ usr / bin / lp', אשר מושך כמה GOP תרגום PDF, אשר מושך כמה ספריות טיוח ... - Jens Timmerman


אתה יכול להסתכל על התוכן של / etc / redhat-release, אשר ייראה משהו כזה:

$ cat /etc/redhat-release 
CentOS release 5.4 (Final)

התוכן שונה עבור מערכת RHEL בפועל. טכניקה זו פועלת על כל הנגזרות RedHat, כולל CentOS, Fedora, ואחרים.


140
2017-12-01 02:13



זו התשובה המתאימה ביותר לשאלה. - fsoppelsa
lsb_release הוא הדבר הראשון לנסות, אבל מאז זה לא יכול להיות מותקן להסתכל קבצים היא תוכנית טובה ב '. - chicks
@chicks בהתחשב בכך שהשאלה מבקשת בדיקה עבור מערכות Redhat, ו- lsb_release אינו מותקן כברירת מחדל במערכות redhat ו / etc / redhat-release, ולאחר מכן lsb_release הוא כמובן לא הדבר הראשון לנסות! - bye
@by זה הדבר הראשון לנסות (לפחות לדעתי), אתה תמיד לנסות את הדברים אשר צריכים להיות נפוצים על כל הפצות הראשון, אז רק אתה עובר לפתרונות ספציפיים להפצה. - Dennis Nolte


אני מעדיף להשתמש בקובץ / etc / issue.

$ cat /etc/issue

ראיתי מצבים רבים בהם / etc / redhat-release השתנה כדי לעמוד בדרישות תאימות התוכנה (לדוגמה, סוכני הניהול של Dell או HP).


24
2017-12-01 05:35



/etc/issue עובד גם על מערכות הפעלה אחרות, כמו דביאן ואובונטו, ועובד עם מערכות הפעלה לינוקס שאינן תואמות את בסיס התקנים של לינוקס, ומערכות הפעלה קלות, שאין להן את כלי השירות lsb *. - Stefan Lasiewski
זה לא אמין. ככל הנראה /etc/issue הוא אמור להיות מנותח על ידי אגרטי, אשר מחליף את רצפי הבריחה עם מידע ראוי. אם אתה פשוט cat זה, התוצאה עשויה להיות מוחץ. על פדורה, אחד מקבל Fedora release 20 (Heisenbug) Kernel \r on an \m (\l), אשר אומר לך משהו אבל על RHEL7, אחד פשוט מקבל \S Kernel \r on an \m. - David Tonhofer
שים לב ש /etc/issue יכול להיות מוחלף על ידי מנהל מקומי ולכן אינו מקור אמין של מידע. - larsks


הדרך הכי אמין מתי  lsb_release  אינו מותקן J

# rpm -q --queryformat '%{VERSION}' redhat-release-server
6Server

# rpm -q --queryformat '%{RELEASE}' redhat-release-server
6.4.0.4.el6

על התקנות מינימלי, lsb_release חסר.

כדי לקבל את זה עובד גם עם שיבוטים Red Hat (אשראי הולך הערות):

# rpm -q --queryformat '%{VERSION}' $(rpm -qa '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)')

או, כפקודה אחת (במקום שתי ביצוע "סל"ד"):

# rpm -qa --queryformat '%{VERSION}\n' '(redhat|sl|slf|centos|oraclelinux)-release(|-server|-workstation|-client|-computenode)'

להשתמש sed/cut ואת הטקסט השני מניפולציה כלי UNIX כדי לקבל את מה שאתה רוצה.


12
2018-06-05 11:15



זה נראה לעבוד, באופן כללי יותר: rpm -qa '(oraclelinux|sl|redhat|centos)-release(|-server)'  sl הוא עבור מדעי לינוקס; אם אתה יודע את השם הנכון עבור אחרים RHEL rebuilds אולי להגיב להלן. אזהרה - לא נבדק בהרחבה. - Dan Pritts
כן תודה, הערה אחת: לא עובד עם RHEL Worstation. - lzap
הערה אחת - זה פועל הרבה יותר לאט מאשר ניתוח / etc / foo- לשחרר. - Dan Pritts
או rpm -qa | grep release הוא אפילו קל יותר - warren


בהנחה שזה באמת שחרור Red Hat (לא Centos):

rpm -q redhat-release

או פשוט הפעל:

uname -r

ומפה את הפלט. 2.6.9 גרעינים הם RHEL4, 2.6.18 גרעינים הם RHEL5. במידת הצורך, תוכל למפות את הגירסה המלאה לשחרור העדכון הספציפי מ- Red Hat (כלומר 2.6.9-89 הוא RHEL5 U4).


5
2017-12-01 13:36



rpm -q redhat-release פשוט מחזירה package redhat-release is not installed בשבילי, ו uname -r רק אומר לי לשחרר את הליבה. - Mark Booth
הו! ועכשיו, עם הזמן, מה יהיה RHEL6? RHEL7? Hum ... הנה התשובות: access.redhat.com/articles/3078#RHEL7 - mika


אני די אוהב להשתמש /etc/os-release קובץ, שנמצא ב- RPM לשחרור:

# yum whatprovides /etc/os-release 
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
 * base: dl.za.jsdaav.net
 * extras: dl.za.jsdaav.net
 * updates: dl.za.jsdaav.net
centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : base
Matched from:
Filename    : /etc/os-release

centos-release-7-4.1708.el7.centos.x86_64 : CentOS Linux release file
Repo        : @anaconda
Matched from:
Filename    : /etc/os-release

קובץ זה ניתן למקור בסקריפטים, כגון:

$ source /etc/os-release
$ echo $NAME
CentOS Linux
$ echo $VERSION
7 (Core)

1
2018-01-23 20:28



מעניין, שימושי. למרבה הצער, לא קיים על RHEL6 כל כך ערך מוגבל כרגע. - Dan Pritts


אם אתה רוצה רק לקבל את מספרי הגירסה הבאה היא כ קצר ופשוט כמו שאני יכול לקבל את זה.

נבדק על רל 6.7, rhel 7.2, debian 8.3 ו אובונטו 14.04:

lsb_release -s -r | cut -d '.' -f 1

לקבלת דוגמה מעשית, נניח שאתה רוצה לבדוק את הגרסה העיקרית ואת הפצה משנית ולעשות דברים על בסיס זה:

#!/bin/bash

major=$(lsb_release -s -r | cut -d '.' -f 1)
minor=$(lsb_release -s -r | cut -d '.' -f 2)

if (( "$major" >= 7 ))
then
  echo "Do stuff, OS major version is $major"
  echo "OS minor version is $minor"
else
  echo "Do other things"
  echo "Your version is $major.$minor"
fi

0
2018-04-06 00:44





הגעה מאוחרת לזה, אבל היה לי כיף לנסות להבין את הגרסה RHEL על כמה צמתים מרוחקים. אז, אם יש לך אצווה של שרתים המשתמשים באותה סיסמה (אני יודע, אני יודע ...) הנה מהירה ומלוכלכת כדי לבדוק את הגירסה RedHat:

צור סקריפט ציפיות

vim server-version.sh

מצפה סקריפט לבדוק גירסה גדולה RedHat על מספר רב של המארחים המרוחקים

#!/usr/bin/expect
log_user 0
spawn ssh -l root [lindex $argv 0]
expect "assword:"
send "sUp3rS3cr3tP4ssW0rd^\r"
expect "# "
log_user 1
send "cat /etc/redhat-release\r"
expect "*#"
log_user 0
send "exit\n"

הפעל את התסריט עבור כל הצמתים שלך

[root@home ~]#
for server in server1 server2 server3 server4 server5; do echo -e "$server: \c"; /root/server-version.sh $server; echo; echo; done;

פלט

server1: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server1 ~]#

server2: cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.3 (Maipo)
[root@server2 ~]#

...

0
2017-10-05 12:31



אם אתה הולך לעשות דברים מרוחקים על הרבה מכונות, אני ממליץ בחום להשתמש Ansible ולא יד מגולגל סקריפטים באש. - Neil Mayhew
אני גם ממליץ לא לאפשר כניסה שורש על ssh - Neil Mayhew


אני מעדיף hostnamectlYou

$ hostnamectl
   Static hostname: xxxxxx.xxx.xxx
         Icon name: computer-server
           Chassis: server
        Machine ID: 3e3038756eaf4c5c954ec3d24f35b13f
           Boot ID: 958452e0088b4191a4ea676ebc90403b
  Operating System: Red Hat Enterprise Linux Server 7.5 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.5:GA:server
            Kernel: Linux 3.10.0-862.3.3.el7.x86_64
      Architecture: x86-64

0
2017-10-04 07:14