Как определить дистрибутив и версию Linux?
Я хочу определить дистрибутив и версию Linux.
Я искал с моей любимой поисковой системой и обнаружил lsb_release
,
К сожалению, этот инструмент не установлен по умолчанию.
Я хотел бы избежать установки lsb_release
первый.
Нет ли более простого способа определить дистрибутив и версию linux переносимым способом?
Под "переносимым" я подразумеваю различные дистрибутивы Linux. Не *BSD или Windows.
7 ответов
cat /etc/*-release
должен сделать трюк
Документы: https://www.freedesktop.org/software/systemd/man/os-release.html
Выбери один...
cat /etc/issue
source /etc/os-release && echo "$NAME $VERSION"
cat /etc/os-release
uname -a
Я думаю, что большинство современных и LSB-совместимых дистрибутивов должны предоставлять / etc / os-release, но, как обычно: это сложно!;-)
Некоторые дополнительные материалы для чтения:
Твоя задача сложная, и у тебя есть мое сочувствие.
Я бы порекомендовал вам использовать библиотеку, а не повторять работу других. Python поставляется с библиотекой с названием "платформа", в которой есть функция для этого:
python -c 'import platform; print(platform.linux_distribution())'
Однако это еще не полное решение, просто слишком много дистрибутивов.
Если в вашей системе установлен ruby gem, вы можете установить facter, используя gem install facter
или если у вас установлена марионетка, вы можете использовать facter
facter os
{
architecture => "x86_64",
family => "RedHat",
hardware => "x86_64",
name => "CentOS",
release => {
full => "7.2.1511",
major => "7",
minor => "2"
},
selinux => {
config_mode => "enforcing",
config_policy => "targeted",
current_mode => "permissive",
enabled => true,
enforced => false,
policy_version => "28"
}
}
Установите Ansible на хосте, который может охватить все хосты, которые вы хотите сканировать. Следуйте инструкциям: http://docs.ansible.com/ansible/latest/intro_installation.html
Затем настройте файл Hosts /etc/ansible/hosts
[all]
overlord
10.10.10.2
[all:vars]
ansible_ssh_common_args='-o StrictHostKeyChecking=no'
ansible_user=root
ansible_ssh_pass=RootPassword
#ansible_become=True
#ansible_become_method='sudo'
#ansible_become_pass=sudopassword
Это может быть IP-адрес или DNS-имена, если это разрешимо. Если вам нужно использовать sudo, раскомментируйте и измените ansible_user
/ ansible_ssh_pass
Запустите модуль установки, чтобы извлечь информацию из хостов
# ansible -i hosts all -m setup
для всех фактов, и вы можете отфильтровать факты, используя
# ansible -i hosts overlord -m setup -a 'filter=ansible_distribution*'
overlord | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "OracleLinux",
"ansible_distribution_major_version": "7",
"ansible_distribution_release": "NA",
"ansible_distribution_version": "7.3"
},
"changed": false
}
Помимо...
cat /etc/*-release
... это скажет вам версию ядра и архитектуру машины.
$ uname -a
В дополнение к опциям, доступным сuname
Вы также можете проверить /etc/issue