Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 23/04/2013, à 15:51

DjZU

[Résolu] Script de reconnexion WiFi

Bonjour à tous,

J'ai récupéré un Dell Mini 9 pour un projet de vidéo-surveillance. Il est nécessaire que ce serveur soit connecté en permanence avec Internet pour envoyer des images. Cependant, alors que je suis encore entrain de mettre au point le système, j'observe que la connexion WiFi gérée par Network Manager se déconnecte parfois, et je procède ainsi pour me reconnecter :

sudo iwconfig eth2 power off
sudo ifconfig eth2 down
sudo ifconfig eth2 up

Puis je me reconnecte avec succès grâce à Network Manager. Si je ne tape pas ces commandes, il m'est impossible de me reconnecter, en effet Network Manager me demanderait plusieurs fois le mot de passe du réseau qu'il connaît déjà, sans pour autant parvenir à se connecter.

Pour résoudre ce problème, j'ai commencé à écrire un petit script qui vérifierait régulièrement l'état de la connexion et le cas échéant exécuter les commandes ci-dessus à ma place.

#!/bin/bash
# indique au système que l'argument qui suit est le programme utilisé pour exécuter ce fichier.
# En cas général les "#" servent à faire des commentaires comme ici

# Ecrire un message
echo Vérification de la connexion Internet...
# Vérifier la connexion
ping -c 1 google.fr &>/dev/null
# Stocker le code de retour de la dernière opération (0=pas d'erreur)
codePing=$?
# Tenter de réparer la carte réseau si la connexion n'est plus active
if [ ! $codePing = 0 ]; then
	echo Tentative de réparation de la connexion...
	sudo iwconfig eth2 power off
	sudo ifconfig eth2 down
	sudo ifconfig eth2 up
	sudo iwconfig eth2 essid wifi
else
	echo La connexion est OK.
fi
exit 0

Mais je ne sais pas comment automatiser l'étape où je clique sur le nom de mon réseau dans Network Manager. Voici mes questions :
- Ma démarche est elle la bonne ?
- Quelle commande pour se reconnecter ?
- Dois-je désinstaller Network Manager et configurer le fichier /etc/network/interfaces ? Si oui, comment ?
- Au fait, pourquoi ma carte wifi s'appelle eth2 et que iwconfig ne voit pas que je suis connecté ?

Pour info, la carte WiFi est une BCM4312 qui utilise les drivers Broadcom STA, je l'utilise pour poster ce message.

Voici mon wificheck.log

>>    cat /etc/lsb-release 

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.10
DISTRIB_CODENAME=quantal
DISTRIB_DESCRIPTION="Ubuntu 12.10"

>>    lsusb 

Bus 001 Device 003: ID 1e3d:2096 Chipsbank Microelectronics Co., Ltd 
Bus 005 Device 002: ID 413c:02b0 Dell Computer Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

>>    lspci -k -nn | grep -A 3 -i net 

03:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)
	Subsystem: Broadcom Corporation Device [14e4:04b5]
	Kernel driver in use: wl
	Kernel modules: wl, ssb
04:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller [10ec:8136] (rev 02)
	Subsystem: Dell Device [1028:02b0]
	Kernel driver in use: r8169
	Kernel modules: r8169

>>    sudo lshw -C network 


>>    lsmod 

Module                  Size  Used by
rfcomm                 37277  12 
bnep                   17708  2 
parport_pc             31969  0 
ppdev                  12818  0 
binfmt_misc            17261  1 
ext2                   67205  1 
joydev                 17162  0 
coretemp               13169  0 
snd_hda_codec_realtek    63579  1 
snd_hda_intel          32516  3 
snd_hda_codec         111548  2 snd_hda_codec_realtek,snd_hda_intel
snd_hwdep              13273  1 snd_hda_codec
snd_pcm                80235  2 snd_hda_intel,snd_hda_codec
dell_laptop            17162  0 
compal_laptop          19251  0 
snd_seq_midi           13133  0 
snd_rawmidi            25383  1 snd_seq_midi
lib80211_crypt_tkip    17230  0 
snd_seq_midi_event     14476  1 snd_seq_midi
dcdbas                 14055  1 dell_laptop
i915                  457241  3 
microcode              18210  0 
snd_seq                51281  2 snd_seq_midi,snd_seq_midi_event
btusb                  17987  0 
drm_kms_helper         47304  1 i915
wl                   2442880  0 
psmouse                84878  0 
serio_raw              13032  0 
lpc_ich                16926  0 
bluetooth             183270  22 rfcomm,bnep,btusb
drm                   238811  4 i915,drm_kms_helper
snd_timer              24412  2 snd_pcm,snd_seq
snd_seq_device         14138  3 snd_seq_midi,snd_rawmidi,snd_seq
lib80211               14041  2 lib80211_crypt_tkip,wl
snd                    62146  15 snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
mac_hid                13038  0 
jmb38x_ms              17178  0 
i2c_algo_bit           13198  1 i915
memstick               15843  1 jmb38x_ms
soundcore              14600  1 snd
video                  18895  1 i915
snd_page_alloc         14037  2 snd_hda_intel,snd_pcm
lp                     13300  0 
parport                40754  3 parport_pc,ppdev,lp
mmc_block              26527  3 
usb_storage            39346  1 
r8169                  55977  0 
sdhci_pci              18156  0 
sdhci                  27831  1 sdhci_pci
>>    iwconfig 

eth2      IEEE 802.11  Access Point: Not-Associated   
          Link Quality:4  Signal level:192  Noise level:199
          Rx invalid nwid:0  invalid crypt:0  invalid misc:0


>>    ifconfig -a 

eth1      Link encap:Ethernet  HWaddr 00:21:70:d2:48:4b  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

eth2      Link encap:Ethernet  HWaddr 00:1d:19:fd:ad:54  
          inet adr:192.168.59.8  Bcast:192.168.59.255  Masque:255.255.255.0
          adr inet6: fe80::21d:19ff:fefd:ad54/64 Scope:Lien
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Packets reçus:1056 erreurs:0 :0 overruns:0 frame:1541
          TX packets:1091 errors:6 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:1000 
          Octets reçus:462162 (462.1 KB) Octets transmis:128309 (128.3 KB)
          Interruption:17 

lo        Link encap:Boucle locale  
          inet adr:127.0.0.1  Masque:255.0.0.0
          adr inet6: ::1/128 Scope:Hôte
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          Packets reçus:200 erreurs:0 :0 overruns:0 frame:0
          TX packets:200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 lg file transmission:0 
          Octets reçus:17455 (17.4 KB) Octets transmis:17455 (17.4 KB)


>>    sudo iwlist scan 


>>    uname -r -m 

3.5.0-27-generic i686

>>    cat /etc/network/interfaces 

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

>>    nm-tool 


NetworkManager Tool

State: connected (global)

- Device: eth1 -----------------------------------------------------------------
  Type:              Wired
  Driver:            r8169
  State:             unavailable
  Default:           no
  HW Address:        00:21:70:D2:48:4B

  Capabilities:
    Carrier Detect:  yes

  Wired Properties
    Carrier:         off


- Device: eth2  [wifi] ---------------------------------------------------------
  Type:              802.11 WiFi
  Driver:            wl
  State:             connected
  Default:           yes
  HW Address:        00:1D:19:FD:AD:54

  Capabilities:
    Speed:           36 Mb/s

  Wireless Properties
    WEP Encryption:  yes
    WPA Encryption:  yes
    WPA2 Encryption: yes

  Wireless Access Points (* = current AP)
    NordNet-0981:    Infra, 68:7F:74:BE:09:80, Freq 2412 MHz, Rate 54 Mb/s, Strength 27 WPA WPA2
    NordNet-6F36:    Infra, 00:1E:E5:8C:6F:36, Freq 2437 MHz, Rate 0 Mb/s, Strength 37 WEP
    *wifi:           Infra, 00:1E:E5:95:25:D6, Freq 2412 MHz, Rate 54 Mb/s, Strength 80 WPA2

  IPv4 Settings:
    Address:         192.168.59.8
    Prefix:          24 (255.255.255.0)
    Gateway:         192.168.59.1

    DNS:             8.8.8.8
    DNS:             8.8.4.4



>>    sudo rfkill list 

Merci à tous pour votre considération.

Dernière modification par DjZU (Le 14/06/2013, à 11:48)


La folie, c'est de faire toujours la même chose et de s'attendre à un résultat différent. Albert Einstein.

Hors ligne

#2 Le 28/04/2013, à 11:19

zibletop

Re : [Résolu] Script de reconnexion WiFi

Salut,

Pour contrôler network manager, il y a la commande nmcli :

exemple :

nmcli nm wifi off
sleep 2 ;
nmcli nm wifi on

a+

Hors ligne

#3 Le 22/05/2013, à 10:36

DjZU

Re : [Résolu] Script de reconnexion WiFi

Salut zibletop,

Merci pour ton aide précieuse. J'ai pu compléter mon script et l'exécuter en temps que tâche cron sous l'utilisateur root. Je le poste ici, "ça peut servir, on sait jamais".

# Ecrire un message
echo Vérification de la connexion Internet...
# Vérifier la connexion
ping -c 1 google.fr &>/dev/null
# Stocker le code de retour de la dernière opération (0=pas d'erreur)
codePing=$?
# Tenter de réparer la carte réseau si la connexion n'est plus active
if [ ! $codePing = 0 ]; then
	echo Tentative de réparation de la connexion...
	nmcli nm wifi off
	sudo iwconfig eth2 power off
	sudo ifconfig eth2 down
	sleep 2
	sudo ifconfig eth2 up
	#sudo iwconfig eth2 essid wifi
	nmcli nm wifi on
	nmcli con up id wifi
	sleep 2
	# Ecrire un message
	echo Vérification de la réparation de la connexion Internet...
	# Vérifier la connexion
	ping -c 1 google.fr &>/dev/null
	# Stocker le code de retour de la dernière opération (0=pas d'erreur)
	codePing=$?
	# Afficher le résultat de la réparation
	if [ ! $codePing = 0 ]; then
		echo La réparation a échoué.
	else
		echo La réparation a fonctionné.
	fi
else
	echo La connexion est OK.
fi
exit 0

Pour la tâche cron, j'ai d'abord dû activer le compte root car certaines commandes ont besoin de privilèges :

sudo passwd root

Puis ajouter la tâche cron :

sudo crontab -u root -e
* * * * * /home/djzu/wifi-repair-djzu.sh

Ainsi, chaque minute, ma connexion wifi est vérifiée et réparée si nécessaire, de manière totalement transparente.

@+


La folie, c'est de faire toujours la même chose et de s'attendre à un résultat différent. Albert Einstein.

Hors ligne

Haut de page ↑