Câu hỏi Làm thế nào để gõ vào màn hình đăng nhập lightdm từ dòng lệnh?


Tôi có một máy tính với ổ đĩa cứng lớn được cấu hình với nhà được mã hóa. Nó xảy ra, rằng cùng một máy tính cũng làm việc trung tâm truyền thông kodi chính của gia đình tôi. Mỗi khi con tôi muốn xem một bộ phim, tôi phải bật nó lên, và sau đó kết nối một bàn phím với nó và gõ mật khẩu.

Tôi rất muốn có thể làm điều đó từ xa.

Tất nhiên tôi cũng có quyền truy cập root vào máy tính.

Tôi không sẵn sàng để tạo một tên người dùng khác với đăng nhập tự động, bởi vì hầu hết các tập tin media được mã hóa và tôi muốn họ giữ nguyên cách này.

Sự kết hợp bình thường của export DISPLAY=0: và source discover_session_bus_addres.sh và xdotool type my_secret_password hoạt động để nhập vào màn hình khóa không hoạt động trên lightm.


3
2018-03-29 05:41


gốc


Người dùng nào bạn đã chạy các lệnh như? Phiên X của LightDM có thể chạy dưới lightdm người dùng - muru
@muru Trên Ubuntu 16.04 nó là root. - Adam Ryczkowski


Các câu trả lời:


Đây là một câu trả lời hoạt động theo Ubuntu 16.04 với lightdm:

  1. Làm cho mình root để có được quyền truy cập vào lightdm's .Xauthority, nằm dưới /var/lib/lightdm/.Xauthority. Hoặc là sao chép nó ở đâu đó, nơi nó sẽ được đọc bởi bạn và thả quyền root của bạn, hoặc đơn giản là vẫn còn root.
  2. bộ XAUTHORITY để trỏ đến tệp đó (ví dụ: export XAUTHORITY=/var/lib/lightdm/.Xauthority)
  3. bộ DISPLAY đến màn hình hiện hoạt (export DISPLAY=:0)
  4. xdotool nên làm việc ngay bây giờ. Thử

    xdotool type "My super secret password"  
    xdotool key Return
    

4
2018-03-29 07:08





Đây là cách giải quyết mà tôi đang sử dụng. Nó là xấu xí và thô lỗ, nhưng cách tiếp cận này cũng sẽ làm việc trong Wayland và GDM (Ubuntu 17.10) nếu tùy chọn đăng nhập tự động hoạt động ở tất cả.

#!/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"
  • Kịch bản nên được thực hiện như là người dùng thông thường (thuộc về nhóm sudoers).

  • Tập lệnh sẽ tạo bản sao lưu của tệp /etc/lightdm/lightdm.conf. Sau đó, nó sẽ tạo ra một tập tin cấu hình mới với tùy chọn đăng nhập tự động, được kích hoạt cho người dùng hiện tại. Tại thời điểm này lightdm sẽ được khởi động lại và người dùng sẽ đăng nhập bằng tùy chọn đăng nhập tự động. Cuối cùng, cấu hình tùy chỉnh sẽ bị xóa và trạng thái ban đầu của tệp cấu hình sẽ được khôi phục.

  • Nếu GDM đang sử dụng: dịch vụ sẽ được khởi động lại là gdm3.service và tệp cấu hình cần được thay đổi là /etc/gdm3/custom.conf.


1
2018-03-31 10:06





Điều này làm việc tốt cho tôi (từ ssh, với lightdm):

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

0
2018-05-02 17:20