[CBLX] Comment éteindre la machine par programme

[ Thread Index | Date Index | More lists.tuxfamily.org/carrefourblinux Archives ]


Bonjour tous,

 

La machine en question est un petit système qui embarque un petit serveur web pour servir une app développée maison. Sur ma table, c’est un Raspberry Pi mais ce sera plus probablement une carte maison, montée autour d’un microcontrôleur NXP d’une puissance équivalente au Raspberry Pi. Il va sans dire que, de base, le linux embarqué là-dessus doit être réduit à sa plus simple _expression_ pour nous donner le plus de place et de puissance possible pour notre app à nous. Grosso modo, on compilera un noyau avec juste les drivers dont on a besoin, un busybox, un serveur SSH pour faire les derniers ajustements, ce petit serveur web et l’app qui va avec.

 

Pour que le serveur s’allume dès qu’on démarre la machine, j’ai fait au plus simple en mettant la commande de lancement du serveur web dans /etc/rc.local et ça le fait bien. Ça fait ce que je veux sur mon Raspberry et l’intégrateur me dit qu’on pourra faire pareil sur la cible.

 

Sur la page web, j’ai su mettre des boutons start et stop pour démarrer et arrêter notre app maison.. Maintenant, on me demande un bouton pour éteindre complètement le petit système de façon à ce que les utilisateurs ne soient pas tentés de débrancher le câble d’alimentation sauvagement.

 

Le problème, c’est que pour faire ça, je ne connais que des commandes qu’il faut passer en sudo. Pourtant, quand j’éteins mon PC linux en partant le soir, depuis l’environnement graphique, je n’ai besoin d’aucun mot de passe alors je me doute bien qu’il doit y avoir un moyen d’éteindre une machine linux sans avoir à passer en mode root. D’où ma question :

 

Quelle est la différence entre une commande du style « sudo poweroff » et l’icône « éteindre » qu’on clique dans l’environnement graphique ? Quelles instructions dois-je mettre dans mon petit serveur web pour qu’il sache éteindre complètement une machine sans avoir recours au mot de passe d’un sudoer SVP ?

 

Aujourd’hui, mon serveur est développé en Python mais en fait, peu m’importe le langage dans lequel il faudra programmer ces instructions. Je trouverai forcément un moyen de les faire exécuter, fussent-elles en assembleur. Oops non, pas l’assembleur parce que je développe sur un PC mais la cible est un processeur ARM mais en C, ou autre, ça va le faire tant que ce langage sera un cran au-dessus de l’assembleur. Une commande toute faite qu’on pourrait taper à la console le ferait aussi, du moment qu’elle ne demande pas de mot de passe.

 

Merci infiniment. Bonne journée. @+ ChD



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/