Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/05/2017, à 19:32

zb2ooby

Recuperer SSID wifi avant login session

Bonjour,

J'ai ecrit un petit script en bash qui recupere le SSID de mon réseau via iwconfig et ecrit une resolution DNS dans etc/hosts
ce script fonctionne parfaitement lorsque je le lance manuellement
mais pas completement automatiquement lorsque je le lance avant le lancement de l'environnement graphique

voici ce que j'ai testé

1/ creer un .desktop dans .config/autostart ou /etc/xdg/autostart : fonctionne tres bien
inconveniant :

    pas de dossier autostart dans toute les distrib (ex : LXDE)voir pas de dossier .config ex (raspberry) or je voudrais qu'il fonctionne pour le maximum de distributions
    necessite obligatoirement un environnement graphique et je voudrais qu'ils puisse se lancer avec ET sans

2/ modifier .bashrc : fonctionne
inconveniant :

    ne se lance pas au demarrage sauf si lancement d'un terminal ==> pas pratique

3/ modifier rc.local : ne fonctionne pas

4/ creer un script d'init : fonctionne
inconveniant :

    script lancé mais ne reconnais pas le SSID car execute le test comme FAUX

cela me fait dire que iwconfig ne fonctionne pas avant lancement du DE
je suppose donc que l'interface wlan0 n'est pas UP avant lancement du DE
à noter que en filaire avec eth0 ce probleme n'apparait pas.
à noter également que le script d'init est bien lancé en dernier ($all)

5/ creer une tache cron
Meme soucis qu'avec le script init : le script fonctionne mais la valeur de la variable SSID reste vide

6/ creer un service avec systemd
meme soucis qu'avec le script init et le cron

donc question :

COMMENT RECUPERER LE SSID D'UNE INTERFACE WIFI AVANT LE LOG ?

voici le script en question :

#!/bin/bash

### BEGIN INIT INFO
# Provides:          nuage.hosts
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Permet le loopback
# Description:       check le reseau au boot. si reconnais le reseau interne alors integre la resolution DNS dans    /etc/hosts
### END INIT INFO

SSID=$(sudo iwconfig wlan0 2> /dev/null | grep -o 'ESSID:.*' | cut -d '"' -f 2)
ETH0=$(sudo arp -a | grep eth0 | cut -d " " -f 1)

##on vide le fichier etc/hosts
#suppression des domaines existants
sudo sed '/#mesdomainesdebut/,/#mesdomainesfin/d' /etc/hosts
#suppression des balises existantes
sudo sed -i '/domaines/d' /etc/hosts
##on le rerempli
#mise en place des balises dans /etc/hosts
sudo echo '#mesdomainesdebut' | sudo tee --append /etc/hosts > /dev/null 
sudo echo '#mesdomainesfin' | sudo tee --append /etc/hosts > /dev/null

#connexions
if [ "$SSID" = Livebox ] || [ "$ETH0" = box.home ]; then
       sudo sed -i '/#mesdomainesdebut/ a\12.12.12.12 mon.domaine.com' /etc/hosts | sudo tee --append /etc/hosts > /dev/null

else
       #suppression des domaines existants
       sudo sed '/#mesdomainesdebut/,/#mesdomainesfin/d' /etc/hosts > /dev/null
fi

exit

merci à tous

Hors ligne

#2 Le 26/05/2017, à 12:08

alduc31

Re : Recuperer SSID wifi avant login session

Salut,

La majorité des distrib utilisent NetworkManager comme gestionnaire de connexion et la connexion ne se fait que lorsque une session graphique est lancée. Donc tu n'aura pas de SSID avant le login.
Ton script devrait contenir une boucle qui permet de tester à intervalle régulier la connexion :

while :
do
  SSID=`iwconfig wlan0 2> /dev/null | grep -o 'ESSID:.*' | cut -d '"' -f 2`
  if [ "$SSID" != "" ] ; then
    # modifie /etc/host
    break  # sort de la boucle
  fi
  sleep 60  # attente 60s
done

L'interface wifi ne se nomme pas forcément wlan0. La convention de nommage a évolué avec systemd (https://www.freedesktop.org/wiki/Softwa … faceNames/) :

INTER=`iwconfig 2>/dev/null | grep 802.11 | cut -f1 -d' '`
SSID=`iwconfig $INTER 2> /dev/null | grep -o 'ESSID:.*' | cut -d '"' -f 2`

Asus UX325EA oled (i5-1135G7,16Go) avec Lunar 23.04 (base xubuntu modifiée)

Hors ligne

#3 Le 26/05/2017, à 13:53

moko138

Re : Recuperer SSID wifi avant login session

zb2ooby a écrit :

je voudrais qu'il fonctionne pour le maximum de distributions

##on vide le fichier etc/hosts

Si tu vises un maximum d'utilisateurs, il me semble que tu pourrais affiner ta procédure afin de préserver les exclusions dans /etc/hosts.
(Nous sommes nombreux à avoir un /etc/hosts étoffé et régulièrement enrichi.)


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#4 Le 26/05/2017, à 17:53

zb2ooby

Re : Recuperer SSID wifi avant login session

Bonjour,

Merci beaucoup à tout les deux.

- alduc31 :
En effet je n'avais pas pensé à la boucle. C'est peut-être la seule solution.
Mais je trouve dommage de devoir faire tourner un script toute les minutes quand une seule écriture au boot pourrait suffire...cela dit ça règle le problème de changement de réseau en cours de route si l'ordi n'a pas été éteint. donc pourquoi pas. Je vais tester ça et je donne le retour asap. Merci

- Moko138 :
pour le commentaire "#on vide le fichier /etc/hosts" il est assez mal tourné. On ne le vide pas en fait on supprime juste l'intervalle entre les deux balises préalablement écrites en fin de fichier. Donc cela conserve les données déjà existantes dans le fichier.
Maintenant peut-être effectivement que les balises #mesdomainesdebut et #mesdomainesfin ne sont pas assez "excluantes" en effet. Je vais voir si je peux faire un truc un peu moins "friendly" pour éviter les effacements inopinés. Merci à toi aussi


Sinon que pensez-vous de filtrer par adresse MAC et non plus par id de connexion ? plus de problème de nom d'interface et un ifconfig peut suffire à les réveler toute (merci Frodon...hum ==> je sors)

Dernière modification par zb2ooby (Le 26/05/2017, à 18:03)

Hors ligne

#5 Le 26/05/2017, à 18:11

moko138

Re : Recuperer SSID wifi avant login session

que pensez-vous de filtrer par adresse MAC et non plus par id de connexion ?

Je ne suis pas compétent.


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#6 Le 26/05/2017, à 18:38

alduc31

Re : Recuperer SSID wifi avant login session

J'avais plutôt compris que tu filtres le SSID pour discriminer le réseau. Pour l'@MAC c'est celle de la carte wifi...


Asus UX325EA oled (i5-1135G7,16Go) avec Lunar 23.04 (base xubuntu modifiée)

Hors ligne

#7 Le 26/05/2017, à 18:58

zb2ooby

Re : Recuperer SSID wifi avant login session

alduc31 a écrit :

J'avais plutôt compris que tu filtres le SSID

oui c'est exactement ce que je veux.

alduc31 a écrit :

Pour l'@MAC c'est celle de la carte wifi...

c'est ce qui me semblais mais je n'étais pas sûr ;-)

Hors ligne

#8 Le 27/05/2017, à 14:05

zb2ooby

Re : Recuperer SSID wifi avant login session

alduc31 a écrit :

Pour l'@MAC c'est celle de la carte wifi...

En y regardant de plus près et en testant sur différentes machines connectée sur le même réseau il apparait que l'ont doit pouvoir filtrer par adresse mac.
Dans iwconfig cela apparait sous le libellé "Access Point". J'ai le même sur toute les machines du réseau

pi@cuisine:~ $ sudo iwconfig
wlan0     IEEE 802.11bgn  ESSID:"Livebox-b9ce"  
          Mode:Managed  Frequency:2.437 GHz  Access Point: 48:83:C7:0B:2B:06 
          Bit Rate=72.2 Mb/s   Tx-Power=31 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on
          Link Quality=51/70  Signal level=-59 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:3  Invalid misc:0   Missed beacon:0

Cela ressemble étrangement à une adresse MAC. peut-être l'adresse MAC de la la box ou de sa carte wifi. quelqu'un peut-il me renseigner la dessus ?
est-ce bien une adresse MAC ? si oui de quel équipement (box ou carte wifi box) ? si non change t'elle à chaque reconnexion ou pas ?


merci

Hors ligne

#9 Le 27/05/2017, à 15:50

alduc31

Re : Recuperer SSID wifi avant login session

Le point d'accès est l'équipement au quel tu te connectes (box, routeur, ...). Il ne change pas de connexion en connexion.
Tu n'y as accès qu'une fois connecté donc filtré le SSID ou le "Access Point" revient au même sauf si le SSID est caché (?) ou modifié...


Asus UX325EA oled (i5-1135G7,16Go) avec Lunar 23.04 (base xubuntu modifiée)

Hors ligne

#10 Le 27/05/2017, à 16:37

zb2ooby

Re : Recuperer SSID wifi avant login session

OK merci beaucoup


J'ai déjà un peu de matière pour bidouiller.

Le coup de la boucle fonctionne bien pour ce qui est de récuperer un ssid au Boot. On ne le récupère pas avant le login mais on se laisse une chance de l'avoir à un moment donné sans intervention manuelle donc je vais continuer dans ce sens.


Pour l'interface wlan0

alduc31 a écrit :

L'interface wifi ne se nomme pas forcément wlan0.

En fait je ne sais pas pourquoi j'ai lancé iwconfig avec l'interface puisque cela fonctionne très bien sans  :

SSID=$(sudo iwconfig 2> /dev/null | grep -o 'ESSID:.*' | cut -d '"' -f 2)

Merci encore pour vos réponses


Je laisse le fil ouvert quand même au cas où quelqu'un aurait une manipulation pour checker les réseaux WiFi disponibles avant le login.

Hors ligne

#11 Le 27/05/2017, à 16:48

alduc31

Re : Recuperer SSID wifi avant login session

Normalement avec ces 2 commandes tu as la liste :

ifconfig <interface> up
iwlist <interface> scan

avec <interface> le nom de l'interface.
Mais avec networkmanager en parallèle pas sûr que ça fonctionne. NetworkManager a son propre outil en ligne de commande (nm-cli il me semble) qui permet aussi de lister les wifi. Je l'ai jamais utilisé donc difficile de t'en dire plus.


Asus UX325EA oled (i5-1135G7,16Go) avec Lunar 23.04 (base xubuntu modifiée)

Hors ligne

#12 Le 27/05/2017, à 23:38

zb2ooby

Re : Recuperer SSID wifi avant login session

Bon j'ai un peu testé tout ça

iwconfig
iwlist
nmcli

les trois solutions fonctionnent très bien on récupère ce qu'on veut mais toujours pas avant le login
A moins de mettre un sleep de quelque secondes en début de script mais cela ralentit légèrement l'allumage et le démarrage...pas très propre...

Hors ligne

#13 Le 01/06/2017, à 15:18

zb2ooby

Re : Recuperer SSID wifi avant login session

Bien,

J'ai laissé mon script fonctionner avec iwconfig

je n'ai pas retenu l'idée de la boucle. Cela m'a posé des soucis à l'exctinction des services.
j'ai par contre crée un service avec systemd qui recharge toute les 60 secondes

donc tout ça fonctionne et ça fait bien tout ce qu'on lui demande. le script est rechargé toute les minutes donc même au sortir d'une veille si on à changé de réseau ça se remettra à jour. ce qui est assez sympa

Pour conclure : tout fonctionne


Mais nous n'avons toujours pas réellement répondu au sujet de ce Topic, et,  dans le but d'en apprendre un peu plus. j'aimerais qu'on puisse :
élucider le fait de ne pas pouvoir scanner les réseaux wifi avant l'ouverture d'une session ?

Je ne comprend pas bien l'idée que je sent poindre selon laquelle la carte wifi ne se chargerai que juste après le login et non juste avant rendant évidemment impossible l'utilisation d'outils tels que iwconfig avant le login...
Si c'est bien ce qui se passe ( et est-ce bien ce qui se passe d'abord ?) pourquoi avoir pensé le truc ainsi ? (sécurité des réseaux wifi ?)

Merci à tous pour vos conseils

Hors ligne