Verifique se as ferramentas sem fio estão instaladas ou não no script bash

1

Eu quero verificar se wireless-config (para iwconfig ) está instalado no sistema (debian). Caso contrário, instale isso com apt-get . Meu script bash é assim:

if ! hash wireless-tools 2>/dev/null; then
   apt-get install wireless-tools; 
else
   echo "wireless-tools is installed"
fi

O grande problema: hash wireless-tools parece não funcionar. Nunca há nada para retornar, seja se as ferramentas sem fio estiverem instaladas ou não. Como posso verificar isso de uma maneira diferente?

    
por ipo 08.01.2018 / 17:53

2 respostas

3

Sugiro type over hash para verificar o binário. No entanto, há também uma ferramenta especificamente projetada para verificar o estado dos pacotes:

if ! dpkg-query -s wireless-tools 1> /dev/null 2>&1 ; then
    echo "Package wireless-tools is not currently installed."
else
    echo "Package wireless-tools is currently installed."
fi
    
por 08.01.2018 / 18:00
2

Se você quiser iwconfig , a solução de longo prazo mais sustentável (digamos, se você trocasse o gerenciador de pacotes ou a distribuição) é verificar o binário que você realmente deseja usar. Você pode fazer isso POSIXly usando command -v :

if command -v iwconfig >/dev/null; then
    echo 'iwconfig present'
else
    echo 'iwconfig absent'
fi

De help command no bash:

command: command [-pVv] command [arg ...]

Execute a simple command or display information about commands.

Runs COMMAND with ARGS suppressing shell function lookup, or display information about the specified COMMANDs. Can be used to invoke commands on disk when a function with the same name exists.

Options:

[...]

  • -v print a description of COMMAND similar to the 'type' builtin
    
por 08.01.2018 / 18:04