Jak uzyskać informacje o systemie operacyjnym instancji Amazon EC2?

33

Właśnie skonfigurowałem instancję EC2 z systemem Linux. Czy istnieje sposób, aby uzyskać wersję / dystrybucję Linuksa uruchomioną na instancji za pośrednictwem terminala?

David
źródło
uname -a powinien podać informacje o jądrze, czasie kompilacji i kilka innych informacji, w tym o dostawcy ... (dzięki uprzejmości Tiernan0)
soandos

Odpowiedzi:

31

Aby uzyskać informacje o dystrybucji:

cat /etc/issue

W przypadku jądra / architektury (jak wspomniano wcześniej):

uname -a
CJ Travis
źródło
cat / etc / problem zadziałał.
David
1
Cóż, chyba że sysadmin włoży coś innego /etc/issue, ponieważ jest to plik zarządzany lokalnie, który jest wyświetlany przed zalogowaniem i może dosłownie być czymkolwiek (lub niczym). :) Na przykład moje systemy obecnie mówią „systemy wymagają autoryzacji, nieautoryzowany dostęp jest tam nielegalny”. Każdy, kto dba o bezpieczeństwo, prawdopodobnie nie umieszcza wszystkich informacji identyfikujących system operacyjny w / etc / problem.
dannysauer
@ Dannysauer, gdzie jeszcze byś to położył. Wszystkie informacje na dowolny temat są przechowywane na urządzeniu pamięci masowej. Czasami widzę te informacje osadzone w binarnym pliku wykonywalnym, który może je wydrukować, ale pod względem bezpieczeństwa niewiele różni się od zwykłego pliku tekstowego, biorąc pod uwagę, że zarówno plik tekstowy, jak i dowolny plik binarny mają tę samą ochronę opartą na systemie plików
ThorSummoner
@ThorSummoner - zawartość / etc / issue jest wyświetlana przed monitem o zalogowanie. To jest problem bezpieczeństwa.
dannysauer
12

Przenośne polecenie dla dystrybucji zgodnych z Linux Standard Base (które jest prawie wszystkim popularnym) lsb_release. Dystrybucję można uzyskać za pomocą „-i”, a wersja pochodzi z „-r”. Opcja „-s” pomija kolumnę nazwy i pokazuje tylko wartość, a -a pokazuje wszystko, co lsb_releasewie o systemie. Na przykład w systemie RHEL 5.5:

$ lsb_release -s -i
RedHatEnterpriseServer

$ lsb_release -s -r
5.5

$ lsb_release -a
LSB Version:    :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: RedHatEnterpriseServer
Description:    Red Hat Enterprise Linux Server release 5.5 (Tikanga)
Release:        5.5
Codename:       Tikanga

Jeśli korzystasz z Red Hat, SuSE, Ubuntu, Debian lub czegokolwiek innego pochodzącego z nich (Fedora, CentOS, cokolwiek), to polecenie będzie działać. W przeciwnym razie będziesz musiał dowiedzieć się kilku informacji specyficznych dla dystrybucji. RedHat na przykład ponownie instaluje pakiet o nazwie redhat-releasei tworzy plik w / etc:

$ rpm -q redhat-release
redhat-release-5Server-5.5.0.2

$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)

Oto jak wygląda na świeżo wyposażonym (2 lutego 2017 r.) Systemie Amazon Linux 2 - po zresetowaniu nazwy hosta:

[ec2-user@fresh-amazon-host ~]$ cat /etc/system-release
Amazon Linux release 2.0 (2017.12) LTS Release Candidate
[ec2-user@fresh-amazon-host ~]$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2.0 (2017.12)"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2.0"
PRETTY_NAME="Amazon Linux 2.0 (2017.12) LTS Release Candidate"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2.0"
HOME_URL="https://amazonlinux.com/"

IMHO, naprawdę powinieneś użyć, lsb_releasejeśli jest dostępny. Jeśli robisz to tylko wizualnie, lsb_release -ajest łatwy do zapamiętania i dość czytelny. Ale jeśli nie jest to opcja, / etc / os-release jest wypełniany jak wyżej w kilku ostatnich wersjach systemu operacyjnego Linux.

dannysauer
źródło
I twoje pierwsze podejście i otrzymuję następujący błąd -bash: lsb_release: command not found. Wypróbowałem również twoje drugie podejście i nie mogę znaleźć niczego, co wspominałoby o redhat /etc. Jakieś inne sugestie?
David
Zacznij od sprawdzenia, czy rpm i apt-get są w systemie; uruchom „what rpm” i „which apt-get”. Jeśli masz rpm, zrób „rpm -qa | less” i sprawdź, czy jest tam coś, co brzmi jak dystrybucja. Jeśli masz apt-get, spróbuj „dpkg -l | less” i zrób to samo. I spróbuj „ls -d / etc / * rel *”, aby sprawdzić, czy w pliku / etc znajduje się plik wydania lub cokolwiek. Och, możesz także zrobić „find / -name lsb_release” na wypadek, gdyby lsb_release nie było na twojej drodze.
dannysauer
apt-getnie ma w systemie. Nie widzę nic, z czym można by się zidentyfikować rpm -qa|less. ls -d /etc/*rel*pracował I wtedy nano /etc/system-release. W pliku mówi mi, że jest to system operacyjny Amazon Linux AMI release 2011.02.1.1. Dzięki.
David
1
downvote, ponieważ lsb_releasenie jest dostępne w systemie Linux amazon, co generalnie prowadzi do zadawania tego pytania ... lsb_releasewymaga dużego łańcucha dep, który jest dostarczany, redhat-lsb-corea aws postanawia to wyłączyć - forums.aws.amazon.com/message.jspa?messageID = 519816
zapalony
1
Wyjaśniłem
7

To działało dla mnie:

# cat /etc/os-release

NAME="Amazon Linux AMI"
VERSION="2015.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2015.03"
PRETTY_NAME="Amazon Linux AMI 2015.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2015.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
Kevin Murray
źródło
Tylko jedna głowa do góry. Używam Amazon Linux AMI 2011.09 i to nie działało, ale zrobiły to inne komentarze cat /usr/share/doc/system-release/ReleaseNotes.txt. Prawdopodobnie działa to na nowsze wersje.
Mauvis Ledford,
2

uname -a powinien dostarczyć informacji o jądrze, czasie kompilacji i niektórych innych informacji, w tym o dostawcy ...

TiernanO
źródło
1

Jak widać po zalogowaniu się do AMI EC2 Amazon Linux AMI:

„Zobacz / usr / share / doc / system-release /, aby uzyskać informacje o najnowszych wydaniach.”

Więc ... po prostu wpisz:

cat /usr/share/doc/system-release/ReleaseNotes.txt
frommelmak
źródło
To zadziałało dla mnie w Amazon Linux AMI 2011.09.
Mauvis Ledford,