如何检测Linux发行版和版本?

我想检测Linux发行版和版本。

我用我最喜欢的search引擎search,发现lsb_release

不幸的是这个工具默认没有安装。

我想避免先安装lsb_release

有没有更简单的方法来检测Linux发行版和便携式的方式?

与“便携式”我的意思是不同types的Linux发行版。 不* BSD或Windows。

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,但是像往常一样:它很复杂! 😉

一些更多的阅读材料:

https://en.wikipedia.org/wiki/Linux_Standard_Base

http://0pointer.de/blog/projects/os-release.html

你的任务是一个困难的,你有我的同情。

我会build议你使用一个库,而不是重复别人的工作。 Python附带了一个名为“平台”的库,它有一个function:

 python -c 'import platform; print(platform.linux_distribution())' 

然而,这仍然不是一个完整的解决scheme,只是有太多的分布。

如果您的系统中安装了gemgem,您可以使用gem install 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名称,只要它是可以parsing的。 如果您需要使用sudo ansible_user并更改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 } 

除了uname可用的选项外,还可以检查/etc/issue

/ etc / issue的手册页

除了…

 cat /etc/*-release 

这将告诉你内核版本和机器结构。

 $ uname -a