Pages : 1
#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
Pages : 1