web-dev-qa-db-ja.com

コマンドラインからlightdmログイン画面に入力する方法は?

暗号化されたホームで構成された大きなハードドライブを搭載したコンピューターがあります。同じコンピューターが私の家族のメインのKodiメディアセンターでも機能するということが起こります。私の子供たちが映画を見たいと思うたびに、私はそれをつけなければなりません、そして、物理的にそれにキーボードを接続して、パスワードをタイプします。

リモートでそれができるようになりたいです。

もちろん、コンピューターへのルートアクセスもあります。

ほとんどのメディアファイルは暗号化されているため、自動ログインを使用して別のユーザー名を作成するつもりはありません。

ロック画面への入力に有効なexport DISPLAY=0:source discover_session_bus_addres.shxdotool type my_secret_passwordの通常の組み合わせは、lightmでは機能しません。

3
Adam Ryczkowski

これは、Ubuntu 16.04でlightdmを使用して機能する回答です。

  1. rootを作成して、.Xauthorityの下にあるlightdmの/var/lib/lightdm/.Xauthorityにアクセスします。読み取り可能な場所にコピーしてルート権限を削除するか、単にルートのままにします。
  2. そのファイルを指すようにXAUTHORITYを設定します(例:export XAUTHORITY=/var/lib/lightdm/.Xauthority
  3. DISPLAYをアクティブなディスプレイに設定します(export DISPLAY=:0
  4. xdotoolはすぐに動作するはずです。試して

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

ここに私が使用している回避策があります。くて失礼ですが、自動ログインオプションがまったく機能する場合、このアプローチはWaylandおよびGDM(Ubuntu 17.10)内でも機能します。

#!/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"
  • スクリプトは、通常のユーザー(sudoersグループに属する)として実行する必要があります。

  • スクリプトは、ファイル/etc/lightdm/lightdm.confのバックアップコピーを作成します。次に、現在のユーザーに対して有効になっている自動ログインオプションを使用して、新しい構成ファイルを生成します。この時点でlightdmが再起動され、ユーザーは自動ログインオプションでログインします。最後に、カスタム構成が削除され、構成ファイルの元の状態が復元されます。

  • GDMを使用している場合:再起動するサービスはgdm3.serviceで、変更する必要がある設定ファイルは/etc/gdm3/custom.confです。

1
pa4080

これは私にとってはうまくいきます(sshから、lightdmで):

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