Este artigo é para quem procura uma forma de executar no Linux, aplicações que são compatíveis somente com o Windows.
Através de uma conexão SeamlessRDP, os aplicativos serão executados de forma transparente, comportando-se como aplicações
locais do Linux.
Para conseguir executar as aplicações no modo Seamless, é necessário, além de habilitar o serviço de conexões remotas (inserir imagem), efetuar o download do servidor que irá executar as aplicações nesta forma, o arquivo pode ser obtido nos seguintes links:
Efetuado o download ou compilado dos fontes, extraia os arquivos em algum diretório, neste tutorial utilizaremos o diretório “c:\seamlessrdp”.
No lado do Linux, é necessário utilizar um script para que seja possível executar diversas aplicações, ou até mesmo várias instâncias da mesma
simultaneamente.
Este script em PERL, você pode encontrar também no site da Fontis, porém, optei por adicionar alguns parâmetros, para que seja possível executar o script somente adicionando o caminho do executável do Windows e transcrevê-lo para shell script:
#!/bin/bash
# Fabio S. Schmidt: fabio@improve.inf.br
#Variaveis
BIN="/usr/local/bin/rdesktop"
HOST="192.168.70.43"
USUARIO="remoto"
SENHA="123456"
KEYMAP="pt-br"
SOCKETRDP="$HOME/.rdesktop/seamless.socket";
SHELLRDP="C:\seamlessrdp\seamlessrdpshell.exe"
#Exigir argumento, aplicativo windows que deve ser executado
#ex.: notepad, calc, "c:\arquivos de programas\internet explorer\iexplore.exe"
if [ -z "$1" ]
then
echo "Utilize $0 "
exit
fi
#Controlar sessoes rpd
#Utiliza o compartilhamento de conexoes que permite executar varias aplicacoes
#ou varias sessoes da mesma simultaneamente
processosrdp=`pgrep -U $USER -x rdesktop | wc -l`;
#se nao existir nenhuma sessao inicia a conexao rpd master
if [ $processosrdp -eq 0 ]
then
$BIN -A -s "$SHELLRDP $1" $HOST -u $USUARIO -p $SENHA -k $KEYMAP
# se existir alguma sessao utiliza o compartilhamento de conexao
else
$BIN -M $SOCKETRDP -l "$1"
fi
Altere as variáveis conforme o seu ambiente, no script o executável do RDESKTOP está em “/usr/local/bin/rdesktop”, o servidor remoto possui IP:
192.168.70.43, o usuário para conexão é REMOTO e a senha: 123456.
No lado do Windows, o aplicativo foi descompactado no diretório “c:\seamlessrdp”.
Basta executar o script conforme abaixo, conforme explicado no próprio:
/caminho/nome_do_script.sh "c:\arquivos de programas\internet explorer\iexplore.exe"
[8] Comentário enviado por Tacioandrade em 02/03/2012 - 14:50h
Fábio esta é uma ótima dica mesmo, porem tendo um problema. Fiz o passo a passo todo correto, consegui compilar o rdesktop depois de aplicar o patch, tudo OK, descompactei o arquivo seamlessrdp_server.zip como nas sua explicação e tudo OK.
Porem quando fui para o Linux tentar executar o script (já com os dados modificados), está aparecendo a seguinte mensagem de erro: Error binding to socket: bind: Permissão negada.
Você sabe o que pode ser isso?????
Outra duvida que tenho, desta forma do tutorial. poderei abrir a aplicação apenas de 1 computador por vez no Windows XP ou 7 normal, ou poderei abrir várias instâncias em várias maquinas, como se estivesse usando como Terminal Server?
[9] Comentário enviado por fs.schmidt em 02/03/2012 - 17:30h
edulanzani = Se o make consegui compilar corretamente, no diretório irá estar o excutável, com o nome "rdesktop"
brunovictor86 = Essa linha </aplicativo> apareceu por engano na publicação da dica, testei aqui apenas retirando, copiando e colando e funcionou perfeitamente.
Tacioandrade = Verifique se está com permissão de gravação no diretório informado na variável SOCKETRDP
Sobre a limitação de sessões simultaneas no Windows sei que o XP ou 7 não permite, somente o TS da linha Server.
[10] Comentário enviado por Tacioandrade em 03/03/2012 - 23:30h
Estava realmente como somente para leitura, porem mesmo dando permissão a pasta C:\seamlessrdp e todos os arquivos dentro dela, continua dando o mesmo erro: Error binding to socket: bind: Permissão negada
O acesso normal ao computador via rdesktop funciona perfeitamente, apenas quando o parametro -A está ativo que ele dá este erro. =/
[12] Comentário enviado por Tacioandrade em 04/03/2012 - 22:08h
Eu estou usando o Windows XP, porem tentei também com o 2003 server que instalei apenas para testar isso.
Uma coisa que percebi é que a pasta está como somente para leitura e mesmo que eu retire esta opção, toda vez que eu clico em OK (após aplicar) ela volta a ficar somente para leitura.
Tentei isso várias vezes, pois vejo nisto um bom projeto para livrar dos XPiratas uma empresa que presto consultória. =)
[13] Comentário enviado por fs.schmidt em 05/03/2012 - 09:53h
Tacioandrade, esse erro está dando no Linux, o rdesktop não está conseguindo escrever no arquivo com socket para realizar o compartilhamento de sessão.
[17] Comentário enviado por manchatnt em 24/04/2012 - 14:01h
Boa Tarde a todos.
Consegui rodar no Windows Server 2003.
Mas não no Windows XP. No Windows XP abre a conexão tsclient sem executar o aplicativo desejado.
Existe alguma configuração em específico para o Windows XP?
[19] Comentário enviado por igor.matos em 11/09/2012 - 10:39h
Opa... quando executo o MAKE me aparece:
pluginti@ubu64:~/rdp/rdesktop$ make
make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.
pluginti@ubu64:~/rdp/rdesktop$ sudo ./configure
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for a BSD-compatible install... /usr/bin/install -c
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking for X... no
ERROR: Could not find X Window System headers/libraries.
[20] Comentário enviado por fs.schmidt em 13/09/2012 - 10:46h
Olá igor.matos, provavelmente no momento da compilação as bibliotecas do X WIndow System não estão sendo encontradas. Confira se estão instaladas e você pode especificar os caminhos com as opções –x-includes e –x-libraries.