Come faccio a provare a livello di programmazione se è ansible connettersi al server X specificato in $ DISPLAY

Questo è un po 'un mezzo-terreno tra la programmazione e il server-admin, ma questo sembra infine il luogo più rilevante per esso.

Sto cercando un modo per determinare se la variabile ' $DISPLAY ' sta pubblicizzando un XServer in cui possiamo effettivamente connettersi, cioè, se tutte le autenticazioni e cosa è in atto per consentire ulteriori cose da eseguire.

Sono idealmente alla ricerca di uno strumento di shell-end che restituisce true / false, che può essere utilizzato in un build-script per determinare se gli altri test in esso (che non ho controllo) dovrebbero essere eseguiti o less.

I test attualmente controllano semplicemente la variabile env " $DISPLAY " e, se esiste, cercherà di connettersi e quando la connessione non funziona, i test presuppongono il guasto del test, non solo il display non è connettibile.

Devo solo essere in grado di fare

 if [[ ! can_connect_to_X ]] ; then unset DISPLAY fi 

Al fine di fermare questi test con gravi problemi mentali.

In una situazione ideale, l'attrezzo necessario per farlo dovrebbe essere fornito con le librerie X Client stesso, per non incorrere in dependencies particolari e per poter assumere se l'utilità non è presente non possiamo connettersi a nessuna visualizzazione.

  • Connessione remota alla session X in esecuzione locale
  • Avviare il programma grafico da TTY
  • Come faccio ad abilitare XRandR in Xvfb o disabilitarlo in firefox quando si esegue firefox senza testa?
  • È ansible effettuare il multidistribuzione del sistema con una scheda grafica / due teste?
  • Come abilitare Xorg per l'utente sul server?
  • Come posso rimuovere i bit GUI da un'installazione di Red Hat Enterprise Linux?
  • Accesso a X con xauth e ssh -X al mio VPS?
  • Le applicazioni GTK non riescono a avviare - xfs riavviare le opzioni necessarie
  • 3 Solutions collect form web for “Come faccio a provare a livello di programmazione se è ansible connettersi al server X specificato in $ DISPLAY”

    È ansible provare con il command xset:

     if [[ ! $(xset -q) ]]; then # the X server is not reachable else # the X server is reachable fi 

    Immagino che esista una soluzione migliore. Ma puoi sempre utilizzare solo un piccolo strumento come xclock e controllare lo stato di output.

     if [[ ! xclock ]]; then exit 1 fi pkill xclock 

    Ma l'uomo, che è brutto 🙂

    Meno Hacky, mettete i seguenti in checkX.c:

     #include <X11/Xlib.h> #include <stdio.h> int main() { Display *display; if( ! (display=XOpenDisplay(NULL) ) ) { return(1); } return 0; } 

    Poi:

     gcc -lX11 checkX.c -o checkX chmod +x checkX 

    Da ultimo:

     if ./checkX; then echo "We are good to go!" fi 

    Ecco un ansible WayToDoIt, non sicuro di quanto sia buono.

      x_works(){ # If there is no xdpyinfo # Bash will return 127 # If X cant connect, it returns 1 # If X can connect, it returns 0 xdpyinfo 1>/dev/null 2>&1 WORKS="$?" return $WORKS } if x_works; then ... 

    Questo sembra funzionare.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.