Como obter o status da rede (on-line / off-line) e atribuí-lo a uma variável no shell script?

4

Como obter o status da rede (on-line / off-line) e atribuí-lo a uma variável no shell script?

    
por Tom Brito 03.03.2011 / 14:41

4 respostas

2

outro ... para placas de rede mais antigas, o comando mii-tool é incrível

    
por 04.03.2011 / 04:31
3

Vou recomendar ip novamente:

status=$(ip -o link show eth0 | awk '{print $9}')

(A nona coluna é o estado da interface)

    
por 03.03.2011 / 16:55
3

Se você usa o gerenciador de rede para sua conexão de rede, você poderia consultá-lo via dbus da seguinte forma:

dbus-send --type=method_call --print-reply --system --dest="org.freedesktop.NetworkManager" "/org/freedesktop/NetworkManager" org.freedesktop.NetworkManager.state

(um pouco obsoleto, mas ainda funciona, para interfaces mais novas, você apenas consultaria um endereço diferente)

Se isso retornar um "3", você está "conectado", conforme descrito no link (mas não diz nada sobre conectividade à internet).

Se você realmente quiser saber se tem conectividade com a Internet, basta executar um ping em um servidor remoto como o google.com e ver se funcionou ou não.

    
por 03.03.2011 / 16:01
1

Você diz que quer simplesmente o status on-line / off-line de uma interface e não está preocupado com a velocidade ou o tipo de link.

Tente ethtool , como root:

# ethtool eth0 |grep "Link detected"
  Link detected: yes
# ethtool eth1 |grep "Link detected"
  Link detected: no

ifconfig também pode mostrar o status on-line / off-line, e esse comando geralmente está disponível para qualquer usuário no sistema.

$ { /sbin/ifconfig eth0 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
0
# This could return some false errors
$ { /sbin/ifconfig eth1 | grep MTU: | grep -w UP >/dev/null 2>&1 ; }; echo $?
1
    
por 03.03.2011 / 19:41