web-dev-qa-db-fra.com

Comment taper dans l'écran de connexion lightdm à partir de la ligne de commande?

J'ai un ordinateur avec de gros disques durs configurés avec une maison cryptée. Il se trouve que le même ordinateur fonctionne également dans le principal centre multimédia Kodi de ma famille. Chaque fois que mes enfants veulent voir un film, je dois l'activer, puis y connecter physiquement un clavier et taper le mot de passe.

J'aimerais pouvoir le faire à distance.

Bien sûr, j'ai aussi un accès root à l'ordinateur.

Je ne souhaite pas créer un autre nom d'utilisateur avec une connexion automatique, car la plupart des fichiers multimédias sont cryptés et je souhaite qu'ils restent ainsi.

La combinaison normale de export DISPLAY=0: et source discover_session_bus_addres.sh et xdotool type my_secret_password qui fonctionne pour la saisie dans l'écran de verrouillage ne fonctionne pas sur le lightm.

3
Adam Ryczkowski

Voici une réponse qui fonctionne sous Ubuntu 16.04 avec lightdm:

  1. Faites-vous root pour accéder au .Xauthority de lightdm, situé sous /var/lib/lightdm/.Xauthority. Soit vous le copiez quelque part où il sera lisible par vous et supprimez vos permissions root, soit vous le restez tout simplement.
  2. définir XAUTHORITY pour qu'il pointe vers ce fichier (par exemple export XAUTHORITY=/var/lib/lightdm/.Xauthority)
  3. régler DISPLAY sur l'affichage actif (export DISPLAY=:0)
  4. xdotool devrait fonctionner maintenant. Essayer

    xdotool type "My super secret password"  
    xdotool key Return
    
5
Adam Ryczkowski

Voici la solution de contournement que j'utilise. C’est moche et grossier, mais cette approche fonctionnera aussi dans Wayland et GDM (Ubuntu 17.10) si l’option de connexion automatique fonctionne.

#!/bin/bash

# NAME: lightdm-auto-login

main() {
    # If the file '/etc/lightdm/lightdm.conf' exists create a backup copy
    [[ -f /etc/lightdm/lightdm.conf ]] && mv /etc/lightdm/lightdm.conf{,.bak}

    # Create autologin configuration for the current $USER = $1
    echo -e "[Seat:*]\nautologin-user=$1" > /etc/lightdm/lightdm.conf

    # Restart 'lightdm' while autologin option is enabled
    systemctl restart lightdm.service

    # Wait for a moment to complete the login process and remove the conf file
    sleep 30 && rm /etc/lightdm/lightdm.conf

    # Restore the backup if exists
    [[ -f /etc/lightdm/lightdm.conf.bak ]] && mv /etc/lightdm/lightdm.conf{.bak,}
}

# Execute the 'main()' function with root privileges in the background 'Sudo -b'
# Pass the curent $USER as arg (https://unix.stackexchange.com/a/269080/201297)
Sudo -b bash -c "$(declare -f main); main $USER"
  • Le script doit être exécuté en tant qu'utilisateur normal (appartenant au groupe sudoers).

  • Le script créera une copie de sauvegarde du fichier /etc/lightdm/lightdm.conf. Il générera ensuite un nouveau fichier de configuration avec l'option de connexion automatique, activé pour l'utilisateur actuel. À ce stade, la lightdm sera redémarrée et l'utilisateur sera connecté à l'aide de l'option de connexion automatique. Enfin, la configuration personnalisée sera supprimée et l'état d'origine du fichier de configuration sera restauré.

  • Si GDM est utilisé: le service à redémarrer est gdm3.service et le fichier de configuration à modifier est /etc/gdm3/custom.conf.

1
pa4080

Cela fonctionne bien pour moi (de ssh, avec lightdm):

$ XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0.0 Sudo sh -c 'xdotool type "My Password" && xdotool key Return'
0
pascalv