Gambas France BETA


Pas de compte ? Incription

Arreter linux par un clic sur un bouton (GB2)

Ce sujet est résolu.

12
AuteurMessages
spheris#1 Posté le 14/7/2013 à 18:31:36
Bonjour,

Par un bouton, je souhaite arreter la machine sur laquelle tourne le programme GB que j'ai concu.
J'ai tenté ceci mais cela ne fonctionne pas :

1
2
3
PUBLIC SUB Button1_Click()
SHELL ("shutdown -r -t 4 now")
END


Auriez-ous une autre piste ?
Merci pour votre réponse.
;)
GarulfoUnix#2 Posté le 14/7/2013 à 18:35:08
By the wayDéjà c'est tout à logique dans le sens que pour arrêter un ordinateur sous POSIX c'est uniquement l'utilisateur root qui en a tous les pouvoirs.
Ca te met sur la piste?
spheris#3 Posté le 14/7/2013 à 18:37:29
GarulfoUnix,
Merci pour cette réponse.
Seulement pour mon logiciel, l'utilisateur ne doit pas savoir qu'il déclenche une commande sous root.
Un gksu ou autre chose ne doit pas etre saisi.
aurais-tu une idée de code ?
GarulfoUnix#4 Posté le 14/7/2013 à 18:48:28
By the waySauf que ce n'est pas possible car c'est de cette façon que fonctionne les systèmes UNIX.
Reivillo#5 Posté le 14/7/2013 à 23:17:57
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonsoir spheris.

Si c'est pour un usage personnel,
tu peux avoir des Pistes ICI
car il faudra modifier des fichiers.
Après, pour mettre dans Gambas, pas de Problème.
Si c'est pour diffuser, faudra documenter.

Çà fonctionne bien sous Gnome.
Mais actuellement, moi je suis sous Mate.

Reivillo.




Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
spheris#6 Posté le 15/7/2013 à 20:18:50
Ok merci les gars.
Je vais arreter le prog gb et l'utilisateur lancera lui meme la sequence d'arret.
Merci encore.
;)
gambix#7 Posté le 16/7/2013 à 08:58:01
Faire simple !Si ton utilisateur a correctement calibré ses droits et peut faire un shut down via son bureau , alors tu peux utiliser DBus pour cela ;)
Moins de texte dans une signature c'est agrandir son espace.
gambix#8 Posté le 16/7/2013 à 09:29:20
Faire simple !Aller c'est cadeau ;) . Tu as juste a sélectionner le composant gb.dbus.

Bonne journée


1
DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", "org.freedesktop.login1.Manager"].PowerOff(TRUE)



Attention ... c'est uniquement valable sur les systèmes utilisant systemd



version script lol


1
2
3
4
5
#!/usr/bin/env gbs3

USE "gb.dbus"

DBus["system://org.freedesktop.login1"]["/org/freedesktop/login1", "org.freedesktop.login1.Manager"].PowerOff(TRUE)

Moins de texte dans une signature c'est agrandir son espace.
linuxos#9 Posté le 16/7/2013 à 10:58:44
Un peu de sel, de poivre et la crevette sera... Bonjour,

Il y a beaucoup plus simple, il suffit de donner le droit a ton utilisateur d'executer la commande 'shutdown' dans le fichier de config de SUDO.

Trouvé sur le net:

La commande sudo me paraît tout adaptée pour faire ce genre de choses. Il suffit de rajouter dans le fichier /etc/sudoers (en tapant simplement visudo de préférence) les lignes suivantes :
User_Alias SHUTDOWNERS = maman, roger, babette
SHUTDOWNERS ALL = NOPASSWD: /sbin/shutdown

Pour autoriser tous les utilisateurs sans fournir de liste, remplacer SHUTDOWNERS par ALL. Pour demander à l'utilisateur de saisir son mot de passe (personnel, pas le mot de passe root, sinon aucun intérêt), il suffit d'enlever la chaîne "NOPASSWD:".
Ensuite il est possible de faire par exemple un joli raccourci sur le bureau qui lance la commande « sudo shutdown -h now ».

Sinon, pour ma part, j'utilise acpid, qui surveille les évènements ACPI, et éteint la machine lorsque le bouton power est pressé... Je trouve que c'est le comportement idéal. C'est un démon qui tourne en root, donc il en a le droit. Son comportement est entièrement configurable : par exemple on peut lui faire lancer un script qui utilise dcop pour déloguer proprement les utilisateurs sous KDE, puis un shutdown (ceci est également applicable à la méthode sudo).

Pour acpid il faut bien sûr avoir un kernel et une machine supportant l'ACPI, alors que sudo présente l'avantage de fonctionner environ partout.

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
gambix#10 Posté le 16/7/2013 à 13:22:08
Faire simple !tu es de quel siècle la ?.

Je ne trouve franchement pas la configuration de la commande sudo plus simple que l'utilisation de dbus. De plus l'acpi se gère aussi via dbus aujourd'hui via upower.

http://upower.freedesktop.org/docs/UPower.html

et via logind :
http://www.freedesktop.org/wiki/Software/systemd/logind/

Tout peut être géré via dbus... ce qui permet de tout gérer depuis n'importe quel appli
Moins de texte dans une signature c'est agrandir son espace.
linuxos#11 Posté le 16/7/2013 à 13:39:39
Un peu de sel, de poivre et la crevette sera... Certes c'est une autre facon de faire mais la solution n'en ai pas moins efficace.

Il choisira par lui meme la solution lui convient le plus.

Si j'étais vraiment d'un autre siècle, comme tu dis, le Mac n'utiliserais pas cette méthode depuis 13 ans ni meme la majorité des distributions Linux depuis plsus de 10 ans.

Deplus c'est un extrait tiré d'Internet, ce n'est pas moi qu'il ai ecrit la description de l'utilisation de SUDO...

Merci d'etre plus tolérant a l'avenir....

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
GarulfoUnix#12 Posté le 17/7/2013 à 00:00:48
By the wayOlivier ne prends pas la mouche :) . Fabien a toujours eu une approche assez ... agressive dans ses réponses parfois mais c'est pas pour autant que derrière cette réponse il a souhaité être méchant à ton égard ;) .

En revanche de par vos réponses enrichissantes c'est intéressant de vous lire, mais pour le coup il fallait juste garder à l'esprit que le but du topics était :
- j'ai un programme GB
- qui doit arrêter la machine
- sans que l'utilisateur n'est à intervenir.

OBJECTIF : la tâche du bouton est d'arrêter l'ordinateur, point :) .

"Sphéris: Seulement pour mon logiciel, l'utilisateur ne doit pas savoir qu'il déclenche une commande sous root."

j'en déduis ainsi que ce n'est pas pour un usage personnel mais lors d'un déploiement d'application. A savoir donc qu'aucun fichier système ne doit être modifié pour y procéder.
linuxos#13 Posté le 17/7/2013 à 00:07:55
Un peu de sel, de poivre et la crevette sera... Garulfo,

J'ai du mal a imaginer, a part par DBUS qu'un utilisateur puisse arreter la machine sans droit 'root ' pour cela.
Soit la machine est déja configurer pour autoriser cela, soit il faudra a un moment ou a un autre lui donner ce droit la.

Sans vouloir Paul & Mickey, ce n'est pas un système windobe .. ou tout le monde a droit a tous...
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
GarulfoUnix#14 Posté le 17/7/2013 à 00:16:39
By the way
Sauf que ce n'est pas possible car c'est de cette façon que fonctionne les systèmes UNIX.


Je ne t'ai pas dis le contraire. Les systèmes UNIX sont conçus de cette façon :) .
C'est justement l'une de ses sécurités du système afin qu'il ne soit pas vulnérable.
Reivillo#15 Posté le 17/7/2013 à 13:12:42
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Par exemple:

J'ai un Démon en Script Bash, qui surveille le Dossier /var/tmp/
Si il y trouve un fichier nommé "Shutdown_Now"
alors il arrête le PC.
Et le fichier Bidon "Shutdown_Now", est créé dans /var/tmp/
par l'application Gambas.
Le Démon peut être installé, automatiquement,
via l'application Gambas, avec le mot de passe de l'Utilisateur final.

Je sais, je sais, je suis complètement Vrillé.
Mais malheureusement cela fonctionne.....

Reivillo.

Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
12