Bon j'y ai passé du temps mais voilà normalement le tout fonctionnel.
C'est donc un script qui permet à la connexion à un nouveau réseau wifi de définir si on veut activer le partage de fichier sur ce réseau. La configuration est ensuite gardée pour les prochaines connexions.
Il est à placer dans /etc/NetworkManager/dispatcher.d
Il faut configurer les permissions de cette manière :
sudo chmode 755 NomDuScript
sudo chown root
sudo chgrp root
Le script en question :
#! /bin/bash
#Le script étant lancé par le système plusieurs variables sont à définir.
export DISPLAY=:0.0 #Définition de l'écran de l'utilisateur
user="UserName" # Mettre son nom d'utilisateur
#On récupère le /home de l'utilisateur connecté
export USER=$user
home=`grep $USER /etc/passwd | cut -d':' -f 6`
#Début du script
if [ "$1" = "wlan0" ] && [ "$2" = "up" ] # On lance le script à la connexion sur l'interface wifi
then
if [ ! -e $home/.config/ChoixPartage/liste_essid ] && [ ! -e $home/.config/ChoixPartage ] #On créé le fichier liste des essid s'il n'existe pas
then
mkdir $home/.config/ChoixPartage
touch $home/.config/ChoixPartage/liste_essid
chmod 664 $home/.config/ChoixPartage/liste_essid
fi
#Définitions de variable :
essid_wlan0=`iwconfig wlan0 | grep -o 'ESSID:".*$'` #Nom du réseau
essid_enregistre=`grep ESSID $home/.config/ChoixPartage/liste_essid | cut -d'%' -f 1` #Noms de réseaux enregistrés dans le fichier liste_essid
#Boucle afin de vérifier si le réseau a déjà été paramétré
for essid in $essid_enregistre
do
if [ $essid = $essid_wlan0 ] #Initialisation d'une variable en fonction que le réseau soit déjà configuré ou non
then
existe="OUI"
fi
done
if [ "$existe" = "OUI" ] #Si déjà paramétré
then
partage=`grep $essid_wlan0 $home/.config/ChoixPartage/liste_essid | cut -d'%' -f 2`
if [ "$partage" = "NON" ] #Vérification s'il faut partager ou non les fichiers et notification en fonction.
then
/usr/bin/service smbd stop #Si NON on stop le service samba
sudo -u $user notify-send "Le partage de fichiers est désactivé pour ce réseau"
else
/usr/bin/service smbd start #Si OUI on start le service samba
sudo -u $user notify-send "Le partage de fichiers est activé pour ce réseau"
fi
else #Si réseau non paramétré alors on le paramètre grâce à Zenity :
sudo -u $user /usr/bin/zenity --question --text "Voulez-vous activer le partage de fichiers sur ce réseau ?"
if [ $? = 0 ] #Si oui
then
echo "$essid_wlan0 %OUI" >> $home/.config/ChoixPartage/liste_essid
/usr/bin/service smbd start #Si OUI on start le service samba + notification.
sudo -u $user notify-send "Le partage de fichiers est activé pour ce réseau"
else #Si non
echo "$essid_wlan0 %NON" >> $home/.config/ChoixPartage/liste_essid
/usr/bin/service smbd stop #Si NON on stop le service samba + notification.
sudo -u $user notify-send "Le partage de fichiers est désactivé pour ce réseau"
fi
fi
fi
- Le script donnait l'impression de ne pas se lancer car c'était root qui le lançait et du coup le ~ ne correspondant pas à mon /home.
- zenity ne se lançait pas ensuite toujours pour la raison que c'était le root qui lançait le script. Il fallait donc définir l'écran et lancer certaines commandes avec 'sudo -u $user'
- J'ai rajouté en plus de jolies notifications
- Si quelqu'un sait comment récupérer le nom de l'utilisateur loggé automatiquement je suis preneur. Vu que c'est root qui lance le script je n'ai pas trouvé comment faire.
- C'est l'un des premiers scripts que je fais. Donc si c'est crade, moche, mal codé, etc. je vous prie de me pardonner ! :rolleyes:
EDIT : Je me pose tout de même une question, certes j'ai désactivé samba mais mes ports sur ufw restent ouverts. Est-ce que ça constitue une faille de sécurité sur un réseau public ?
EDIT 2 : dans le doute, l'ouverture et la fermeture des ports a été rajoutée au script.
EDIT 3 : correction d'une erreur dans la première boucle for qui faisait que le paramétrage du réseau auquel on est connecté n'était pas pris en compte s'il n'était pas le dernier réseau inscrit dans la liste.
Suppression des lignes concernant le pare feu.