logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 01-07-2020 19:27:05

Maufab
Membre
Lieu : Ariège
Distrib. : Bullseye
Noyau : 5.10.0-13-amd64
(G)UI : KDE
Inscription : 12-03-2010

Script bash cliquable sous LXQT

Bonsoir,
Afin de faciliter la configuration d'une connexion wifi par wpa_passphrase à l'utilisateur, je lui ai créé un script cliquable sur le bureau. Ceci en attendant de trouver une solution avec un service systemd au boot.
Si j'exécute le script depuis le terminal via sudo, aucun problème. Mais lorsque je clique sur le script en le faisant exécuter dans un terminal, malgré le sudo en début de ligne, il me répond Permission non accordée pour écrire dans le fichier /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf


#! /bin/bash

# this is declare that current user is a sudoer
#sudo tee /etc/sudoers.d/$USER <<END
#END

echo "Entre le nom de la box : "
read ssid
echo "Entre le mot de passe : "
read wpa
echo $ssid $wpa
sudo wpa_passphrase $ssid $wpa >>/etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf
read
 



Là, je coince.
Je précise que tout ça parce que la machine est un portable Acer 7250 avec carte wifi Atheros AR9425 kernel driver ath9k qui présente un soft et hard blocked.  Le service systemd rfkill_unblock_all que j'ai écris ne débloque rien au boot, il faut donc que je le relance manuellement pour pouvoir activer la carte. Donc pas moyen d'utiliser Networkmanager. La raison pour laquelle je passe par wpa_supplicant.
Merci d'avance.

Hors ligne

#2 01-07-2020 19:54:51

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Script bash cliquable sous LXQT

Hello
Essai

#! /bin/bash
# this is declare that current user is a sudoer
#sudo tee /etc/sudoers.d/$USER <<END
#END

read -p "Entre le nom de la box : " ssid
read -p "Entre le mot de passe : " wpa
sudo sh -c 'wpa_passphrase $ssid $wpa >>/etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf'
read



ou avec la commande tee (voir man tee)

echo 'wpa_passphrase $ssid $wpa' | sudo  tee -a /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf

Dernière modification par Croutons (01-07-2020 20:11:26)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#3 01-07-2020 19:59:35

Anonyme
Invité

Re : Script bash cliquable sous LXQT

Bonjour,

peut-être exécuter wpa_passphrase sans password, une option "/usr/bin/wpa_passphrase" à ajouter dans sudoers. Mais pas fortiche sur ce genre de modification, je ne sais pas si c'est prudent.
Je laisse ça aux connaisseurs.
Moi, je l'ai fait pour hddtemp et smartctl

Dernière modification par Anonyme (01-07-2020 20:02:54)

#4 01-07-2020 21:57:58

Philou92
Adhérent(e)
Lieu : Hauts de Seine
Distrib. : Debian bookworm
Noyau : Linux 6.1.0-13-amd64
(G)UI : LightDM et Xfce4.18
Inscription : 29-04-2015

Re : Script bash cliquable sous LXQT

Peut-on voir la rédaction du service systemd rfkill_unblock_all ?

Tousse antique Ovide !

Hors ligne

#5 01-07-2020 23:54:22

anonyme-15
Invité

Re : Script bash cliquable sous LXQT

Maufab a écrit :


Si j'exécute le script depuis le terminal via sudo, aucun problème. Mais lorsque je clique sur le script en le faisant exécuter dans un terminal, malgré le sudo en début de ligne, il me répond Permission non accordée pour écrire dans le fichier /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf



Ce ne sont pas les mêmes permissions.

sudo ./script porte sur bash.

sudo dans ton script porte sur wpa_supplcant.

Pour que ça marche, il faut ajouter wpa_supplicant dans le fichier sudoers, ou bien passer par su -c

Dernière modification par anonyme-15 (01-07-2020 23:54:47)

#6 02-07-2020 07:15:56

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Script bash cliquable sous LXQT

Il faut lancer ton script avec les droits admin

Ton script devrait commencer par un test de ce style

if [[ $(id -u) -ne 0 ]] ;
      then echo "Necessite les droits roots" ;
      exit 1 ;
fi


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#7 02-07-2020 07:17:50

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Script bash cliquable sous LXQT

Et pour ajouter un service, voici un lien facile
https://www.cloudsavvyit.com/3092/how-t … anagement/

"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#8 02-07-2020 07:29:40

Maufab
Membre
Lieu : Ariège
Distrib. : Bullseye
Noyau : 5.10.0-13-amd64
(G)UI : KDE
Inscription : 12-03-2010

Re : Script bash cliquable sous LXQT

Croutons a écrit :

Hello
Essai

#! /bin/bash
# this is declare that current user is a sudoer
#sudo tee /etc/sudoers.d/$USER <<END
#END

read -p "Entre le nom de la box : " ssid
read -p "Entre le mot de passe : " wpa
sudo sh -c 'wpa_passphrase $ssid $wpa >>/etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf'
read



ou avec la commande tee (voir man tee)

echo 'wpa_passphrase $ssid $wpa' | sudo  tee -a /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf



Ni l'un, ni l'autre ne le fait. Dans le premier cas, que ce soit en lançant le script depuis un terminal ou en cliquant sur le fichier, j'ai en fin de fichier wpa_supplicant_wlp7s0.conf ceci : usage: wpa_passphrase <ssid> [passphrase] car je pense que les variables $ssid et $wpa ne sont pas prises en compte à l'intérieur de sh -c '...'.
Dans le second, ça m'écrit 'wpa_passphrase $ssid $wpa  dans le même fichier.

Dernière modification par Maufab (02-07-2020 07:40:43)

Hors ligne

#9 02-07-2020 07:34:03

Maufab
Membre
Lieu : Ariège
Distrib. : Bullseye
Noyau : 5.10.0-13-amd64
(G)UI : KDE
Inscription : 12-03-2010

Re : Script bash cliquable sous LXQT

Philou92 a écrit :

Peut-on voir la rédaction du service systemd rfkill_unblock_all ?


Bien sûr :

[Unit]
Description=
Before=network-pre.target
Wants=network-pre.target
Before=wpa_supplicant@wlp7s0.service

[Service]
#Type=oneshot
#RemainAfterExit=yes
Restart=on-failure

ExecStart=/usr/sbin/rfkill unblock all

[Install]
WantedBy=multi-user.target
 


et wpa_supplicant@wlp7s0.service :


[Unit]
After=rfkill_unblock.service
#After=network.target
Wants=rfkill_unblock.service
Before=network.target
Before=network-online.target

[Service]

#ExecStart=/root/wifi_connect.sh
ExecStart=/usr/sbin/wpa_supplicant -B -i wlp7s0 -c /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf
ExecStartPost=/usr/bin/systemctl restart systemd-networkd-wait-online.service

[Install]
WantedBy=multi-user.target
 

Hors ligne

#10 02-07-2020 07:44:20

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Script bash cliquable sous LXQT

remplace les simple quote par des doubles quote voir si ça passe mieux

echo "wpa_passphrase $ssid $wpa" | sudo  tee -a /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf


"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#11 02-07-2020 08:41:10

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Script bash cliquable sous LXQT

Dans le second, ça m'écrit 'wpa_passphrase $ssid $wpa  dans le même fichier.


je comprend pas j'ai repris ton script , c'est toi qui écrit les infos dans le même fichier
avec le double chevrons tu inscris les infos a la suite du fichier , d’où l'option -a de la commande tee


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#12 02-07-2020 12:53:00

Anonyme
Invité

Re : Script bash cliquable sous LXQT

Bonjour,

as-tu essayer comme Anonyme-15 te l'a proposé ? smile


nano /etc/sudoers
 



Dans la partie :

## Same thing without a password
...
...
...



ajouter :

TON_USER  ALL = NOPASSWD: /usr/bin/wpa_passphrase

pour voir smile

#13 02-07-2020 13:15:32

Croutons
Membre
Distrib. : Debian12
Noyau : Linux 6.1.0-13-amd64
(G)UI : Fluxbox(NakeDeb)
Inscription : 16-12-2016

Re : Script bash cliquable sous LXQT

oui en faite je crois que je viens de comprendre ce que tu veux faire c'est passer ta commande dans ton fichier alors que la tu inscrit le résultat dans le fichier (avec le message d'erreur en prime)
donc pour que la commande ne soit pas exécuté il faut utiliser echo avec double guillemet comme dit cyrille sinon la variable n'est pas lu

echo "wpa_passphrase $ssid $wpa" | sudo  tee -a /etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf



par contre je crois qu'il te faut écraser le fichier a chaque lancement du script sinon les lignes vont se rajouter a la suite et ça ne risque pas de fonctionner
mais si on écrase le fichier il faut le recréer avec toutes les lignes, sûrement avec cat et une redirection
voir dans le wiki
https://debian-facile.org/doc:systeme:c … le-en-root

Dernière modification par Croutons (02-07-2020 13:21:19)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<-- 
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

Hors ligne

#14 02-07-2020 15:06:24

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script bash cliquable sous LXQT

Plutôt que de créer un script, pourquoi ne pas utiliser wicd qui est fait pour cela ?

Hors ligne

#15 02-07-2020 16:39:19

cyrille
CA Debian-Facile
Lieu : Nowhere
Distrib. : SID + FreeBSD. Stable sur serveurs.
(G)UI : Xfce/Openbox
Inscription : 21-06-2020
Site Web

Re : Script bash cliquable sous LXQT

A mon avis, si tu poursuis ton script
je testerai les droits dès le début pour être sûr que le script est lancé en droit root
j'ajouterai au début une liste des réseau dispo pour être sur que le SSID soit correct (nmcli dev wifi)
Penser à la gestion de l'erreur pour le cas ou le mdp est erroné



Pour l'histoire d'écrire à la fin du fichier, tu peux copier le fichier original et le ré injecter à chaque connexion , ainsi tu repars d'un fichier vide auquel tu ajoutes ensuite la ligne souhaitée

"Ils ne me comprennent point, je ne suis pas la bouche qu’il faut à ces oreilles."

Association Debian-Facile | Les cahiers du débutant | ISO Debian-FacilePage perso. sur #df

Hors ligne

#16 02-07-2020 20:14:33

Maufab
Membre
Lieu : Ariège
Distrib. : Bullseye
Noyau : 5.10.0-13-amd64
(G)UI : KDE
Inscription : 12-03-2010

Re : Script bash cliquable sous LXQT

Merci Crouton et les autres. Avec les guillemets doubles, ça fonctionne, en tout cas sous KDE, puisque j'ai rendu le portable sous LXQT au copain qui se débrouille en attendant avec les instructions que je lui ai fourni et la ligne de commande roll :

#! /bin/bash
read -p "Entre le nom de la box : " ssid
read -p "Entre le mot de passe : " wpa
sudo sh -c "wpa_passphrase $ssid $wpa >>/etc/wpa_supplicant/wpa_supplicant-wlp7s0.conf"



Quant à wicd ou Network manager, tant que la carte wifi est dans l'état bloqué, avec rfkill list, je ne vois pas comment les utiliser. Et comme je connais mieux wpa_supplicant, voilà.

Dernière modification par Maufab (02-07-2020 20:17:05)

Hors ligne

#17 02-07-2020 22:29:59

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script bash cliquable sous LXQT

Alors, c'est curieux d'arriver à te connecter avec wpa_supplicant et pas avec wicd ou
Network manager. Quand une carte est bloquée, on peut la « rfkill unblock ».
Si elle est bloquait de manière hard, il faut appuyer sur le bouton adéquat.
Quelques fois c'est un peu alambiqué avant d'y arriver, mais ça devrait fonctionner.
Il y a longtemps que je n'ai pas touché à ces outils car je n'utilise pas d'ordi portable
et pas non plus le wifi. Mais ça avait fonctionné à l'époque où je m'étais servi des outils
wicd et rfkill.

Hors ligne

#18 03-07-2020 20:32:13

Maufab
Membre
Lieu : Ariège
Distrib. : Bullseye
Noyau : 5.10.0-13-amd64
(G)UI : KDE
Inscription : 12-03-2010

Re : Script bash cliquable sous LXQT

enicar a écrit :

Alors, c'est curieux d'arriver à te connecter avec wpa_supplicant et pas avec wicd ou
Network manager. Quand une carte est bloquée, on peut la « rfkill unblock ».
Si elle est bloquait de manière hard, il faut appuyer sur le bouton adéquat.
Quelques fois c'est un peu alambiqué avant d'y arriver, mais ça devrait fonctionner.
Il y a longtemps que je n'ai pas touché à ces outils car je n'utilise pas d'ordi portable
et pas non plus le wifi. Mais ça avait fonctionné à l'époque où je m'étais servi des outils
wicd et rfkill.



En fait, comme je l'ai écrit plus haut, ces scripts bash je les fait en attendant de résoudre mon problème avec le service systemd rfkill_unblock_all.service qui ne fonctionne pas au boot, mais qui fonctionne pourtant bien si je le relance manuellement. L'utilisateur n'a pas de grande connaissance en ligne de commande, alors je pensais lui faire deux scripts cliquables qui sont exécutés dans le terminal. Je n'ai pas dit que je n'y arrivais pas avec wicd ou network-manager, plutôt que je sais bien utiser wpa_supplicant  par habitude vu que j'avais passé la gestion de mon réseau sous systemd avec wpa_supplicant. Tout simplement je vais au plus simple pour moi avec mes connaissance. De plus, fut une époque où network-manager déconnait complètement sur ma machine.

Hors ligne

Pied de page des forums