Como detectar a distribuição e versão do Linux?

2

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.

    
por guettli 19.10.2017 / 10:07

7 respostas

8

cat /etc/*-release deve fazer o truque

Documentos: link

    
por 20.10.2017 / 00:38
3

Escolha um ...

cat /etc/issue
source /etc/os-release && echo "$NAME $VERSION"
cat /etc/os-release
uname -a

Acho que as distribuições mais modernas e compatíveis com o padrão LSB devem fornecer / etc / os-release, mas como sempre: é complicado! ; -)

Algum material de leitura adicional:

link

link

    
por 24.10.2017 / 20:28
1

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.

    
por 24.10.2017 / 17:31
1

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"
  }
}
    
por 24.10.2017 / 22:44
1

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
}
    
por 03.11.2017 / 09:50
-1

além das opções disponíveis com uname , você também pode verificar /etc/issue

página de manual do / etc / issue

    
por 19.10.2017 / 19:55
-1

Além de ...

cat /etc/*-release 

... isso lhe dirá a versão do kernel e a arquitetura da máquina.

$ uname -a
    
por 23.10.2017 / 16:29

Tags