Usando scripts if-up e if-down para desabilitar a conexão sem fio quando o eth1 estiver conectado [closed]

4

Estou tentando configurar minhas interfaces de rede. Gostaria de desativar minha interface sem fio ao conectar um cabo Ethernet. Quando retiro o cabo Ethernet, minha interface sem fio deve ser ativada novamente.

Eu criei /etc/network/if-up.d/wlandown:

#!/bin/sh

[ "$IFACE" != "eth1" ] || exit 0
ifdown wlan0

exit 0

e /etc/network/if-down.d/wlan-up:

#!/bin/sh

[ "$IFACE" != "eth1" ] || exit 0
ifup wlan0
wpa_cli -i wlan0 reassociate

exit 0

mas parece que não funciona de todo. O WPA ainda tenta se conectar o tempo todo. Eu posso ver wlan0 aparece e desaparece o tempo todo. Minhas perguntas são:

  1. Como depurar esses scripts, por exemplo o que aconteceu e o que foi executado?
  2. Qual é a maneira correta de implementar o que eu estou procurando?
  3. Além disso, parece que nada acontece quando eu desconecto o cabo Ethernet. A interface está ativa e o endereço IP é atribuído. Eu gostaria de baixá-lo nesse caso, para que eu pudesse usar o wireless.

Estou usando o Debian unstable

    
por Grzenio 17.05.2009 / 23:03

8 respostas

2

Isso é para um sistema desktop? Você já pensou em usar gerenciador de rede ou wicd . Essas ferramentas cuidam muito disso para você automaticamente.

How can I debug these scrips, e.g. what happened and what was executed?

Você pode querer usar algo como logger para enviar informações de depuração para o syslog. Ou você poderia simplesmente colocar alguns comandos de eco aqui e ali para escrever coisas em um arquivo em algum lugar.

    
por 18.05.2009 / 01:02
1

Aqui está uma possível solução "não testada",

no seu / etc / network / interfaces

allow-hotplug eth0
iface eth1 inet dhcp

down ifconfig wlan0 up
down wpa_cli -i wlan0 reassociate

up ifconfig wlan0 down

allow-hotplug wlan0
iface wlan0 inet dhcp

up ifconfig eth0 down
down ifconfig eth0 up

bem há meus cinco centavos, eu uso a configuração acima para modificar rotas baseadas na interface acima / abaixo em um servidor meu, pode funcionar para você também, razão pela qual eu fiz isso usando o arquivo de interface era que meus scripts não pareciam para executar a partir do diretório /ifup.d mesmo com 755.

Deixe-me saber se funciona, infelizmente, eu não tenho uma máquina debian com uma placa wifi para testar: (

    
por 22.05.2009 / 16:22
1

Parece que o pacote ifplugd tem todos os scripts que eu preciso! Depois de instalar:

apt-get install ifplugd

e adicionando eth1 ao arquivo de configuração /etc/default/ifplugd tudo começou a funcionar como eu queria, sem adicionar scripts extras (limpei tudo no estado inicial).

Obrigado a todos pela ajuda

    
por 31.05.2009 / 14:48
0

Eu ainda acho que ajustar a métrica na interface sem fio é o caminho a seguir, como descrevi em Como posso configurar o wpa_supplicant para que minha interface wlan seja desabilitada quando eu conectar o cabo ethernet?

    
por 18.05.2009 / 01:09
0

Você quer configurar algo na subárvore / etc / network /, como sugere o womble, aumentando a métrica da rota wifi, ou talvez por algum outro meio envolvendo um script personalizado em / etc / network / if-up .d / isso levaria a interface wifi para baixo se a interface ethernet surgisse.

As informações sobre como criar scripts para /etc/network/if-up.d/ estão na página do manual de interfaces, na seção 'OPÇÕES DO IFACE'.

    
por 18.05.2009 / 16:45
0

O problema é que você não pode executar ifup / down recursivamente. Eu tentei fazer algo semelhante, onde eu queria trazer uma interface VPN quando uma interface WAN foi criada.

Minha solução é:

echo ifup vpn0 | at now >/dev/null 2>&1

Para trazer automaticamente uma interface para cima e para baixo quando o cabo estiver conectado ou desconectado, use ifplugd do pacote com o mesmo nome.

    
por 27.05.2009 / 14:03
0

hmm comentários não gostam de código.

#!/bin/bash

interval=5

while [ 0 -lt 1 ]; do 
         ifconfig eth0 up 
         ifconfig eth0 | grep 'inet addr' | awk '{ print $2 }' | cut -c 6- > /tmp/eth0.stat
         if [ -z /tmp/eth0.stat ]; then
         ifconfig eth0 down
         sleep $interval
         else
         echo "We have an address ('cat /tmp/eth0.stat'), looking good." > /var/log/eth0.stat.log
         sleep 10
         fi
done

crie um daemon para executar isso na inicialização.

deixe-me saber como funciona

    
por 02.06.2009 / 14:39
-1

Pelo menos nas distribuições relacionadas ao Fedora, se você olhar o script ifup e seus parentes, verá que se /sbin/ifup-local e /sbin/ifdown-local existirem, eles serão executados. Isso fornece um local seguro para você conectar scripts locais da máquina. O único argumento passado para esses scripts será o dispositivo subir ou descer.

Você pode criar esses scripts e iniciá-los e interromper a eth0 se o dispositivo que está sendo iniciado ou interrompido for o seu dispositivo sem fio.

Não sei se os scripts de rede estão configurados para funcionar da mesma maneira no Debian e nas distribuições relacionadas, mas vale a pena dar uma olhada.

    
por 18.05.2009 / 00:13