Pertanyaan Bagaimana cara memulai aplikasi X dari SSH [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Saya sudah mencoba mencari topik ini di google, tetapi tanpa hasil yang signifikan.

Saya perlu memulai beberapa aplikasi GUI dari terminal, tetapi saya tidak peduli apa yang ditunjukkan aplikasi ini kepada saya. Selain itu, saya perlu memulai beberapa contoh aplikasi ini di sesi yang berbeda. Ini terhubung dengan beberapa tes otomatis GUI, jadi saya tahu apa yang saya inginkan dan saya mencari jawaban :).

Saya pikir langkah-langkah yang tepat harus:

  1. Buka sesi jendela X baru
  2. Dapatkan id sesi baru saya
  3. ekspor ke env variabel (ekspor DISPLAY: 13.0)
  4. jalankan aplikasi saya

tapi saya terjebak pada langkah pertama. apakah ada orang di sini yang memiliki masalah serupa?

--- EDIT: 1) Saya tidak peduli dengan keluaran GUI - saya hanya perlu stdout dan stderr dari aplikasi saya. - itulah mengapa pertanyaan ini tidak menduplikasi - kenal baik google :). Saya tidak ingin mengarahkan output ke GUI saya sendiri.


14
2018-06-08 13:30


asal


Saya pikir Anda bisa mulai X dan kemudian jalankan. - Tim
Itu tidak jelas. Apakah Anda memiliki desktop grafis yang berjalan secara lokal? Atau apakah Anda ingin menjalankan aplikasi X tanpa tampilan nyata, baik lokal maupun jarak jauh? - Rmano
Melihat tldp.org/HOWTO/Remote-X-Apps.html --- mungkin itu bisa membantu. - Rmano
Rmano: Saya harus menjalankan aplikasi dan mengkliknya dengan kerangka robot + pustaka selenium - tetapi saya tidak perlu melihat output apa pun dari GUI, hanya log dari skrip saya - apakah ini jawaban untuk pertanyaan Anda? - Paweł Wojtal


Jawaban:


Jika Anda tidak peduli untuk melihat apa yang sedang dilakukan aplikasi, Anda dapat menyediakannya dengan server x "virtual" dengan xvfb:

Xvfb menyediakan server X yang dapat berjalan di mesin tanpa layar   perangkat keras dan tidak ada perangkat input fisik. Ini mengemulasi yang bodoh   framebuffer menggunakan memori virtual. Penggunaan utama dari server ini adalah   dimaksudkan untuk menjadi pengujian server, tetapi menggunakan novel lain untuk itu telah   ditemukan, termasuk menguji klien terhadap kedalaman dan layar yang tidak biasa   konfigurasi, melakukan pemrosesan batch dengan Xvfb sebagai latar belakang   render engine, load testing, sebagai bantuan untuk mem-porting server X ke   platform baru, dan menyediakan cara yang tidak mengganggu untuk menjalankan aplikasi   yang tidak benar-benar membutuhkan server X tetapi bersikeras memiliki satu server.

Setelah menginstalnya, Anda dapat memulainya dengan:

sudo Xvfb :10 -ac -screen 0 1024x768x24 &

itu akan berjalan di latar belakang, kemudian Anda memulai klien Anda dengan:

DISPLAY=:10 your-client

19
2018-06-08 15:13



Ini yang saya cari! Terima kasih!!!! - Paweł Wojtal
Ada juga skrip bagus yang disediakan dengan Xvfb - xvfb-run yang melakukan hal yang saya perlukan: membuat tampilan virtual dan menjalankan perintah yang dilewatkan sebagai argumen. - Paweł Wojtal


Perintah singkat:

ssh -X <username>@<host> gedit &

dari man ssh

-X      Enables X11 forwarding.
        This can also be specified on a per-host basis in a configuration file.

        X11 forwarding should be enabled with caution.  Users with the
        ability to bypass file permissions on the remote host (for the
        user's X authorization database) can access the local X11
        display through the forwarded connection. An attacker may then
        be able to perform activities such as keystroke monitoring.

  1. Memeriksa /etc/ssh/sshd_config di sisi server:

    sudo nano /etc/ssh/sshd_config
    

    untuk garis di bawah ini:

    X11Forwarding yes
    X11UseLocalhost no
    

    Restart ssh srever, jika Anda telah melakukan perubahan:

    sudo service ssh restart
    
  2. Memeriksa /etc/ssh/ssh_config di sisi klien:

    sudo nano /etc/ssh/ssh_config
    

    untuk garis di bawah ini

    ForwardX11 yes
    ForwardX11Trusted yes
    

11
2018-06-08 15:37





Anda hanya perlu menjalankan ekspor DISPLAY =: id # dalam sesi ssh Anda dan program yang dijalankan akan berjalan pada layar jarak jauh. Contoh cepat:

maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit

Sekarang gedit akan berjalan di layar testSSH yang bernama pengguna

Anda dapat mempersingkat ini semua menjadi satu perintah:

ssh testSSH@myServer "DISPLAY=:0 nohup gedit"

6
2018-06-08 14:31



itu tidak bekerja untukku. Ini adalah apa yang saya dapatkan. - daltonfury42
Jika myServer jauh menjalankan X, defaultnya DISPLAY aku s :0tidak :1. Ini hanya akan berfungsi jika pengguna yang Anda hubungi (testSSH) adalah yang sama yang menjalankan server X jarak jauh, jika tidak trik auth diperlukan. - Rmano
Lihat juga unix.stackexchange.com/questions/10121/… tentang trik auth. - Rmano
@Rmano Itu hanya contoh dan bukan nilai nyata, OP harus memasukkan nomor yang benar - Maythux
Anda butuh ssh -Y atau ssh -X. Mengekspor layar tidak akan cukup. - terdon♦