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)
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 -i '/#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 à vous

