Linuxのディストリビューションとバージョンを検出したい。
お気に入りの検索エンジンで検索して、lsb_release
。
残念ながら、このツールはデフォルトではインストールされません。
インストールを避けたいlsb_release
最初。
ポータブルな方法でLinuxディストリビューションとバージョンを検出する簡単な方法はありませんか?
「ポータブル」とは、さまざまな種類の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を提供するはずですが、いつものように複雑です。 ;-)
その他の参考資料:
あなたの仕事は難しいものであり、私の同情があります。
他の人の作業を繰り返すのではなく、ライブラリを使用することをお勧めします。 Pythonには、これを実行する機能を持つ「プラットフォーム」と呼ばれるライブラリが付属しています。
python -c 'import platform; print(platform.linux_distribution())'
ただし、これはまだ完全なソリューションではなく、単にディストリビューションが多すぎます。
スキャンするすべてのホストに到達できるホストに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
}
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"
}
}