Como digitar na tela de login do lightdm a partir da linha de comando?

3

Eu tenho um computador com grandes discos rígidos configurados com home criptografado. Acontece que o mesmo computador também funciona no principal centro de mídia do kodi da minha família. Toda vez que meus filhos querem ver um filme, eu tenho que ligá-lo e então conectar fisicamente um teclado a ele e digitar a senha.

Eu adoraria poder fazer isso remotamente.

É claro que também tenho acesso root ao computador.

Eu não estou disposto a criar outro nome de usuário com login automático, porque a maioria dos arquivos de mídia são criptografados e eu quero que eles permaneçam assim.

A combinação normal de export DISPLAY=0: e source discover_session_bus_addres.sh e xdotool type my_secret_password que funciona para digitar na tela de bloqueio não funciona no lightm .

    
por Adam Ryczkowski 29.03.2018 / 05:41

3 respostas

4

Aqui está uma resposta que funciona no Ubuntu 16.04 com lightdm :

  1. Faça você mesmo root para obter acesso ao .Xauthority do lightdm, localizado em /var/lib/lightdm/.Xauthority . Copie-o em algum lugar onde ele possa ser lido por você e solte suas permissões de root ou simplesmente permaneça root.
  2. defina XAUTHORITY para apontar para esse arquivo (por exemplo, export XAUTHORITY=/var/lib/lightdm/.Xauthority )
  3. defina DISPLAY para a exibição ativa ( export DISPLAY=:0 )
  4. xdotool deve funcionar agora. Experimente

    xdotool type "My super secret password"  
    xdotool key Return
    
por Adam Ryczkowski 29.03.2018 / 07:08
1

Aqui está a solução alternativa que estou usando. É feio e rude, mas essa abordagem também funcionará no Wayland e no GDM (Ubuntu 17.10) se a opção de login automático funcionar.

#!/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"
  • O script deve ser executado como usuário regular (que pertence ao grupo sudoers).

  • O script criará uma cópia de backup do arquivo /etc/lightdm/lightdm.conf . Em seguida, ele gerará um novo arquivo de configuração com a opção de login automático, ativado para o usuário atual. Neste ponto, o lightdm será reiniciado e o usuário será logado pela opção de login automático. Finalmente, a configuração personalizada será removida e o estado original do arquivo de configuração será restaurado.

  • Se o GDM estiver em uso: o serviço a ser reiniciado é gdm3.service e o arquivo de configuração que deve ser alterado é /etc/gdm3/custom.conf .

por pa4080 31.03.2018 / 10:06
0

Isso funciona bem para mim (do ssh, com lightdm):

$ XAUTHORITY=/var/lib/lightdm/.Xauthority DISPLAY=:0.0 sudo sh -c 'xdotool type "My Password" && xdotool key Return'
    
por pascalv 02.05.2018 / 17:20