web-dev-qa-db-ja.com

Linuxディストリビューションとバージョンを検出する方法は?

Linuxのディストリビューションとバージョンを検出したい。

お気に入りの検索エンジンで検索して、lsb_release

残念ながら、このツールはデフォルトではインストールされません。

インストールを避けたいlsb_release 最初。

ポータブルな方法でLinuxディストリビューションとバージョンを検出する簡単な方法はありませんか?

「ポータブル」とは、さまざまな種類のLinuxディストリビューションを意味します。 * BSDやWindowsではありません。

3
guettli

cat /etc/*-releaseトリックを行う必要があります

ドキュメント: https://www.freedesktop.org/software/systemd/man/os-release.html

11
Diego Velez

一つを選ぶ...

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

4
Jan Grewe

あなたの仕事は難しいものであり、私の同情があります。

他の人の作業を繰り返すのではなく、ライブラリを使用することをお勧めします。 Pythonには、これを実行する機能を持つ「プラットフォーム」と呼ばれるライブラリが付属しています。

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

ただし、これはまだ完全なソリューションではなく、単にディストリビューションが多すぎます。

0
Bracken

スキャンするすべてのホストに到達できるホストに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
}
0
Danie

Ruby gemがシステムにインストールされている場合は、gem install facterを使用してfacterをインストールできます。または、puppetがインストールされている場合は、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"
  }
}
0
c4f4t0r