SeamlessRDP - Executando aplicações Windows

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.

[ Hits: 20.335 ]

Por: Fabio Soares Schmidt em 28/02/2012


Executando aplicações Windows



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:
É possível também compilar direto dos fontes: http://rdesktop.svn.sourceforge.net/viewvc/rdesktop/seamlessrdp/trunk/

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"

Ou:

/caminho/nome_do_script.sh notepad

Obrigado,

Fabio S. Schmidt
Página anterior    

Páginas do artigo
   1. Introdução e Compilação
   2. Executando aplicações Windows
Outros artigos deste autor

Implementação de NIDS com EasyIDS

Criando VPN site-to-site, conectando diversas filiais a matriz com openVPN

Controle de acesso à internet com Squid

Instalação do Oracle 10g R2 no SUSE Linux Enterprise Server 11

Leitura recomendada

Espelhando a tela do smartphone Android no Linux via Wi-Fi (ADB + SCRCPY)

O que é Orientação a Objeto - Mais uma tentativa

Falta de padronização no Linux

Como fazer uma distribuição Linux (parte 2)

O Filho à Casa Torna

  
Comentários
[1] Comentário enviado por leo.silva em 29/02/2012 - 11:57h

quando executo o comando ./bootstrap apresenta o seguinte erro:
./bootstrap: 3: autoreconf: not found

como posso soluciona-lo?

[2] Comentário enviado por fs.schmidt em 29/02/2012 - 12:42h

Olá amigo, é necessário instalar o pacote autoconf.

[3] Comentário enviado por leo.silva em 29/02/2012 - 13:12h

Valeu amigão, agora funcionou!

[4] Comentário enviado por edulanzani em 29/02/2012 - 17:56h

Não econtrei o executavel do rdesktop.

[5] Comentário enviado por brunovictor86 em 02/03/2012 - 11:05h

Fabio, otimo artigo, vai me ajudar muito.

Estou com o seguinte problema, não consigo abrir mais de uma sessão aparece o seguinte erro.

line 33: syntax error near unexpected token `newline'
line 33: `</aplicativo>'

Apaguei essa ultima linha `</aplicativo>' e tambem nao abre.

[6] Comentário enviado por brunovictor86 em 02/03/2012 - 12:28h

Fabio, tem como ter duas instancia de um programa abreto com o mesmo usuario de ts?

[7] Comentário enviado por edulanzani em 02/03/2012 - 14:37h

Para abrir duas instancias de um mesmo usuario, vc deve configurar no servidor de ts pra ele aceitar multiplas conexes do mesmo usuario.

[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?


Obrigado pela contribuição. =)

[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.

Abraços e obrigado pela leitura !

[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. =/

[11] Comentário enviado por edulanzani em 04/03/2012 - 08:08h

Tacioandrade = Qual a versão do windows que você está utilizando?

[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.

[14] Comentário enviado por ipi em 06/03/2012 - 23:13h

Desculpe, eu nao entendi direito, precisa ter um windows instalado em outra particao ou numa VM? É isso mesmo?

Obrigado se puder esclarecer.

[15] Comentário enviado por fs.schmidt em 07/03/2012 - 09:37h

Ipi = Esta configuração pode ser feita através de uma máquina virtual Windows no próprio sistema, ou com um servidor através do Terminal Services.

[16] Comentário enviado por edulanzani em 12/04/2012 - 09:09h

Estou usando essa solução a quase um mes. E funciona muito bem. Parabéns pelo artigo.

[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?

[18] Comentário enviado por tacioandrade em 24/04/2012 - 17:01h

Cara tava com o mesmo problema, para resolver instalei um patch que transformar o XP em um servidor TS.

http://ziggi.uol.com.br/downloads/terminal-server-patch

Com isso funciona perfeitamente.

[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.

O que pode ser?

[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.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts