A melhor maneira de detectar programaticamente o host atual (por recursos de hardware)

4

Eu tenho um disco rígido com uma instalação do Linux que gosto de inicializar a partir de diferentes computadores físicos. Minha pergunta é se é possível detectar programaticamente a qual computador a unidade está conectada. Por exemplo, tentei chamar cat /proc/cpuinfo e canalizar para sha256sum na esperança de criar um hash exclusivo de informações de hardware para cada estação de trabalho, mas parece que listas como aquelas em / proc nem sempre mantêm as mesmas informações após cada reiniciar, porque quando eu usei esse método, meu hash continuou mudando.

Existe alguma maneira fácil de fazer isso?

    
por pepper 14.11.2015 / 00:47

1 resposta

2

Como Tom Hunt sugeriu em um comentário, use o endereço MAC de uma das interfaces de rede. Endereços MAC são exclusivos. (Isso pressupõe que todos os computadores tenham pelo menos uma interface de rede, mas essa é uma suposição plausível.)

Tome cuidado para que possa haver várias interfaces. Eu recomendo que você trate todos eles como identificadores válidos para a mesma máquina, para evitar problemas em vários cenários (interfaces podem receber nomes diferentes se forem detectadas em uma ordem diferente; algumas interfaces podem ser removíveis (por exemplo, USB dongle) ou desabilitado (por exemplo, wifi kill switch)).

Você pode usar este comando para listar os endereços MAC de todas as interfaces de rede atualmente disponíveis (estejam elas em uso ou não):

ip addr show | awk '$1 == "link/ether" {print $2}'
    
por 15.11.2015 / 01:40