ping sobre wlanX quando X é desconhecido

0

Estou executando um script bash que atualiza a tabela de hosts e testa uma conexão com um host específico. Ele é executado com sucesso em várias máquinas. Ao longo do caminho, ele verifica a comunicação com um determinado host usando

ping -I wlan0 <host>

e

ping -I eth0 <host>

Isso funcionou bem até eu tentar usá-lo em uma máquina cujo (um e único) dispositivo sem fio é uma vítima de shenanigans do udev ( semelhante a este ), às vezes usando wlan0 e outras vezes wlan1.

Existe uma maneira confiável de escrever meu script bash para pingar com um dispositivo wlanX arbitrário, sem código de escrita para identificar qual deles a máquina prefere usar em um determinado dia?

    
por JR. 12.06.2018 / 00:01

2 respostas

1

Você pode identificar a interface usada com este comando (executado como root):

iwconfig 2>/dev/null | grep -o "^\w*"

e a saída será, por exemplo:

wlan0

Você precisa salvar a resposta em uma variável no seu script

    
por 12.06.2018 / 10:11
0

Qualquer um desses dois comandos listará suas interfaces do sistema sem loopback, para que você possa iterar entre elas:

ip link | awk '$1+0>1 {print substr($2,1,length($2)-1)}'
netstat -i | awk 'NR>2 && $1 != "lo" {print $1}'

Como alternativa, você pode ajustar a condição awk para imprimir apenas as linhas que começam com wlan :

ip link | awk '$1+0 && $2 ~ /^wlan/ {print substr($2,1,length($2)-1)}'
netstat -i | awk 'NR>2 && $1 ~ /^wlan/ {print $1}'
    
por 12.06.2018 / 10:51

Tags