cat /etc/*-release
deve fazer o truque
Documentos: link
Eu quero detectar a distribuição e versão do Linux.
Eu pesquisei com meu mecanismo de pesquisa favorito e descobri lsb_release
.
Infelizmente, esta ferramenta não está instalada por padrão.
Eu gostaria de evitar instalar lsb_release
primeiro.
Não existe uma maneira mais fácil de detectar a distribuição e versão do Linux de maneira portátil?
Com "portável" quero dizer diferentes tipos de distribuições linux. Não * BSD ou Windows.
cat /etc/*-release
deve fazer o truque
Documentos: link
Sua tarefa é difícil e você tem minha simpatia.
Eu recomendaria que você usasse uma biblioteca em vez de repetir o trabalho de outras pessoas. O Python vem com uma biblioteca chamada 'platform' que tem uma função para fazer isso:
python -c 'import platform; print(platform.linux_distribution())'
No entanto, esta ainda não é uma solução completa, há simplesmente muitas distribuições.
Se você tem o ruby gem instalado em seu sistema, você pode instalar o facter usando gem install facter
ou se você tiver um fantoche instalado, você pode usar o 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"
}
}
Instale Ansible em um host que seja capaz de alcançar todos os hosts que você deseja verificar. Siga as instruções: link
Em seguida, configure um arquivo 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
Pode ser um endereço IP ou nomes DNS, desde que seja resolvido. Se você precisar usar o sudo uncomment e alterar o ansible_user
/ ansible_ssh_pass
Execute o módulo de configuração para extrair informações dos hosts
# ansible -i hosts all -m setup
para todos os fatos e você pode filtrar os fatos usando
# 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
}
além das opções disponíveis com uname
, você também pode verificar /etc/issue
Além de ...
cat /etc/*-release
... isso lhe dirá a versão do kernel e a arquitetura da máquina.
$ uname -a