Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2018, à 14:46

tarkan99

sshpass et commande dbus-send (standby)

Hello,

je cherche à écrire un petit script zenity me permettant de lancer le mode standby sur une machine distante.

La commande suivante ne nécessite pas sudo :

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.Suspend" boolean:true

mais lancé via sshpass, j'ai l'erreur suivante :

Error org.freedesktop.DBus.Error.InteractiveAuthorizationRequired: Interactive authentication required.

voici mon script :

#!/bin/bash
# 21/03/2018 permet d'afficher une boite de dialogue pour saisie compte et pwd

#On crée le formulaire en stockant les valeurs de sortie dans $cfgpass :/
cfgpass=`zenity --forms \
    --title="Gestion alimentation à distance" \
    --text="Identifiant à utiliser" \
    \
    --add-password="Mot de passe" \
    --separator="|"`

if [ "$?" -eq 1 ]; then
    #On quitte le script
    exit
fi

#echo "le mot de passe est ${cfgpass#*|} le compte est : ${cfgpass%|*}"

passe=$(echo "$cfgpass" | cut -d "|" -f2) 
#echo $passe


commande="dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 ""org.freedesktop.login1.Manager.Suspend"" boolean:true"

sshpass -p "$passe" ssh COMPTE@MACHINE $commande

une idée ?

Merci d'avance.


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#2 Le 22/03/2018, à 15:31

maxire

Re : sshpass et commande dbus-send (standby)

Salut,

La mise en mode veille de la machine est possible pour un utilisateur normal en mode local et non en mode distant (remote, via ssh si tu préfères).
Voir du côté des règles policykit.
Cette restriction me semble raisonnable ceci afin de ne pas donner trop de pouvoir à un intrus potentiel.


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#3 Le 22/03/2018, à 16:53

tarkan99

Re : sshpass et commande dbus-send (standby)

Merci pour le tuyau. Est-il possible de modifier ces réglages ?
Par exemple donner ce droit à un seul utilisateur ?


xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#4 Le 24/03/2018, à 11:43

tarkan99

Re : sshpass et commande dbus-send (standby)

Mon fichier local (dans /etc/polkit-1/localauthority/50-local.d) contient ceci :

# ajout de Action=org.freedesktop.login1.suspend-multiple-sessions


[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes
ResultAny=yes
ResultInactive=yes

[Re-enable sleep by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.suspend
ResultActive=yes
ResultAny=yes
ResultInactive=yes





[Réactive hiberner par défaut dans logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultInactive=yes
ResultActive=yes


[Re-enable hibernate multiple-sessions]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate-multiple-sessions
ResultActive=yes
ResultAny=yes
ResultInactive=yes


[enable power off for every session]
Identity=unix-user:*
Action=org.freedesktop.login1.power-off
ResultActive=yes
ResultAny=yes
ResultInactive=yes

[enable reboot for every session]
Identity=unix-user:*
Action=org.freedesktop.login1.reboot
ResultActive=yes
ResultAny=yes
ResultInactive=yes



[Re-enable sleep by default in login1]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend
ResultActive=yes
ResultAny=yes
ResultInactive=yes

[Re-enable sleep by default in login1]
Identity=unix-user:*
Action=org.freedesktop.login1.suspend-multiple-sessions
ResultActive=yes
ResultAny=yes
ResultInactive=yes


[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate
ResultActive=yes
ResultAny=yes
ResultInactive=yes

[montage sans demande pwd]
Identity=unix-user:*
Action=org.freedesktop.udisks2.filesystem-mount
ResultActive=yes
ResultAny=yes
ResultInactive=yes

[montage sans demande pwd]
Identity=unix-user:*
Action=org.freedesktop.udisks2.filesystem-mount-system
ResultActive=yes
ResultAny=yes
ResultInactive=yes

[montage sans demande pwd]
Identity=unix-user:*
Action=org.freedesktop.udisks2.filesystem-mount-other-seat
ResultActive=yes
ResultAny=yes
ResultInactive=yes


[demontage sans demande pwd]
Identity=unix-user:*
Action=org.freedesktop.udisks2.eject-media
ResultActive=yes
ResultAny=yes
ResultInactive=yes

Pour ma question, j'ai trouvé ceci :
https://askubuntu.com/questions/21586/h … end-server

Mais la solution apportée ne fonctionne pas :

[Allow all ssh-users to upower]
Identity=unix-group:ssh-users
Action=org.freedesktop.upower.policy
ResultInactive=no
ResultActive=yes
AllowAny=yes

xubuntu 22.04.1 sur machine assemblée base de Core i5 9400

Hors ligne

#5 Le 24/03/2018, à 12:08

maxire

Re : sshpass et commande dbus-send (standby)

Salut,

org.freedesktop.upower.policy

Je ne pense pas que ce soit la bonne action, plutôt regarder:

pkaction | grep org.freedesktop | grep suspend

Je mettrais plutôt ResultAny=yes et Action=org.freedesktop.login1.suspend-multiple-sessions
Je ne peux pas vraiment te guider dans la mesure où j'utilise une version de policykit plus récente et au fonctionnement très différent.

Je ne suis même pas certain que pkaction soit disponible avec la version de policykit que tu utilises.


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#6 Le 25/03/2018, à 17:58

LeoMajor

Re : sshpass et commande dbus-send (standby)

bonjour,

tu as juste à remplacer par n'importe quelle commande en sudo (shutdown, suspend, loginctl terminate-session <id_session> ) ...)

simule ssh .... sudo fdisk -l    via expect, tcl-expect

nano fdisk.tcl

#! /bin/env tclsh
package require Expect

set prompt {toto\@machine:~}
set sudoers {mot_de_passe}
#if { $::argc == 1 } {set sudoers [lindex $argv 0]} else {puts "USAGE: 1 argument svp"; exit}

spawn sshpass -p "$sudoers" ssh -t toto@machine -p22 

expect "$prompt" {send "sudo fdisk -l \n"}
expect -re "\[sudo\].*pass" { send "$sudoers\n" }
expect  "$prompt" { foreach line [split $expect_out(buffer) "\n"]  {puts $line } }

tclsh fdisk.tcl

Dernière modification par LeoMajor (Le 25/03/2018, à 18:08)

Hors ligne