Real VNC no Ubuntu 10.04 LTS via xinetd

0

Estou tentando obter o servidor Real VNC no Ubuntu 10.04 LTS 64 bit.

Eu tentei duas opções. Primeiro, eu comecei a edição livre de VNC real e comecei a trabalhar depois de obter tudo requer bibliotecas de 32 bits, hacking de configuração etc. É quase bom com um pequeno problema, depois de desconectar cliente, servidor imprime Aborted e sai. Eu tentei muitos combinação de parâmetros e não consegui descobrir isso.

Isso é aproximadamente uma linha de comando que eu usei (mas eu tentei muitas combinações de parâmetros).

Xvnc :2 -desktop user-desktop -query localhost -geometry 1920x1200 -depth 16 -AcceptCutText -SendCutText -rfbauth /home/user/.vnc/passwd -SecurityTypes None -DisconnectClients

Segunda opção. Eu obtive a versão de teste do Real VNC Enterprise 4.6.1 e instalei-o. Agora posso começar felizmente como servidor autônomo e meus clientes podem desconectar sem matar o servidor, mas quando eu tento usá-lo com a opção -inetd , ele simplesmente sai silenciosamente. Quando eu tento a edição gratuita, ela entra no modo stdio e imprime mensagem de handshake

RFB 003.008

Não é o caso da edição corporativa. Apenas sai. Nenhuma mensagem e nenhum registro.

Então, alguém tem alguma ideia de como obter qualquer uma das opções de trabalho?

Por recomendação do @grawity eu corro strace e ltrace . Aqui está a saída mais interessante do ltrace (eu coletei dados no arquivo chamado abc e apenas linhas coladas que eu acho interessantes):

$cat abc | egrep 'strchr|print'

fprintf(0x7f330223e860, "\n%s", "Sun Jul 10 13:07:30 2011\n") = 26
strchr("inetd client gone, exiting", ' ')        = " client gone, exiting"
strchr("client gone, exiting", ' ')              = " gone, exiting"
strchr("gone, exiting", ' ')                     = " exiting"


$ cat abc | egrep 'strchr|print' | grep socket
strchr("getpeername: Socket operation on"..., ' ') = " Socket operation on non-socket "...
strchr("Socket operation on non-socket ("..., ' ') = " operation on non-socket (88)"
strchr("operation on non-socket (88)", ' ')      = " on non-socket (88)"
strchr("on non-socket (88)", ' ')                = " non-socket (88)"
strchr("non-socket (88)", ' ')                   = " (88)" 
    
por Alex Gitelman 10.07.2011 / 02:31

1 resposta

1

Tente executá-lo em ltrace ou strace .

Pode ser que o modo inetd exija que stdin e stdout sejam soquetes - por exemplo, isso é necessário para determinar o IP do cliente endereço. É provável que o RealVNC não esteja preparado para que getpeername() retorne a falha.

Como alternativa, use Xvnc.

    
por 10.07.2011 / 12:42