Como encontrar o hostname de um servidor X

3

Digamos que eu esteja na máquina local e faça login na máquina remote com ssh, usando o encaminhamento X11. Existe alguma maneira para programas em execução na sessão ssh em remote pode saber que eles estão sendo exibidos em local ? Idealmente, gostaria de saber o nome do host do computador em que o servidor X está sendo executado. Meu objetivo é causar um comportamento diferente em um programa (emacs) baseado em qual máquina é exibida.

    
por jpkotta 30.07.2013 / 00:28

1 resposta

1

Eu não acho que o servidor X relate seu nome de host aos clientes. Os clientes devem saber o nome do host ao qual estão se conectando, mas através de uma conexão SSH, isso é localhost , com o ssh fazendo o encaminhamento.

O servidor OpenSSH define a variável de ambiente SSH_CLIENT ; você pode ler o endereço IP do cliente de lá. Esse é o endereço visto pelo servidor, então você não consegue distinguir máquinas atrás do mesmo NAT. Este é o endereço do servidor X, desde que nada mais esteja acontecendo (encaminhamento via SSH, servidor X remoto no cliente,…). Note que você só obterá a variável de ambiente no Emacs se ela foi iniciada dentro daquela conexão SSH, não se você criou um quadro em um Emacs com o emacsclient.

Você pode obter algumas propriedades da exibição (dimensões, profundidade de cor, fornecedor X,…) no Emacs com as funções x-server-XXX , x-display-XXX e display-XXX .

    
por 30.07.2013 / 02:37