Aplicativo em Python
Foi criado um aplicativo em Python para que seja possível a execução do nomachine(client) dentro de um pendrive. Portanto o aplicativo teria que copiar alguns arquivos de configuração do pendrive para dentro do home do usuário que esteja logado no momento.
Para a melhor utilização desse aplicativo foi transformado o código em python "py" para um arquivo binário "exe". Para que isso fosse possível foi utilizado um programa chamado py2exe.
Abaixo o código do aplicativo:
import os, sys
from time import sleep
from shutil import copytree
from shutil import rmtree
def deleta_tudo(diretorio):
try:
os.rmdir(diretorio)
except:
pass
for root, dirs, files in os.walk(diretorio, topdown=False):
for file in files:
try:
os.remove(os.path.abspath(os.path.join(root,file)))
except:
pass
for dir in dirs:
try:
os.rmdir(os.path.abspath(os.path.join(root,dir)))
except:
pass
try:
os.rmdir(diretorio)
except:
pass
def deleta_dir(ficheiro):
while os.path.exists(ficheiro):
rmtree(ficheiro)
break
sleep(0.5)
dir1 = (os.popen('set userprofile'))
dir1 = (dir1.read())
dir3 = dir1.split ('=')[1][:-1]
SPATH = dir3+'.nx'
while 1:
if os.path.exists(SPATH):
deleta_tudo(SPATH)
elif not os.path.exists(SPATH):
break
sleep(0.5)
copytree ('nx',SPATH)
status = os.system("%s " % ('nxclient'))
print status
if status != 0:
print "%s exited funny: %s" % ("nxclient.exe", status)
raise SystemExit
while 1:
if os.path.exists(SPATH):
deleta_tudo(SPATH)
elif not os.path.exists(SPATH):
break
Criando arquivo freenx.bat
Para que os arquivos de instalação do NoMachine e os arquivos do aplicativo em python não ficassem espalhados na raiz do pendrive, foi criado um pequeno script em "bat" para fazer a chamada do binário do python, e então abrir o binário do nomachine.
@echo off
cd nxclient
start freenx.exe
Cliente NoMachine (necessariamente versão 1.5)
Vamos agora executar o cliente do NX e configurá-lo para acessar o nosso servidor. Nesse caso a configuração deverá ser feita dentro de um pendrive.
A seguir informamos o nome do perfil de conexão, o endereço remoto da máquina (nome ou IP) e a porta do SSH (normalmente 22, mas por segurança alteramos para a porta 37775). O tipo de conexão vai ajudar o NX a determinar itens como nível de compressão, quantidade de cores, etc. No exemplo, a estação está conectada em um ADSL de 256kbps.
O padrão é o NX server fazer uma conexão Unix, ou seja, estar entrando em uma máquina que acessa o ambiente gráfico pelo NX proxy (é possível também utilizá-lo para conexões VNC ou RDP). Selecionamos também o tipo de sessão remota que pode ser KDE, Gnome ou Custom. Utilizaremos o Custom para determinar a interface gráfica Fluxbox. Isso indicará qual gerenciador de janelas deverá ser chamado no caso de uma conexão bem sucedida. No exemplo foi selecionada a resolução de 800x600, pois a estação de testes roda a 1024x768 e não havia interesse em ocupar a tela inteira (padrão).
Um detalhe importante: a opção de habilitar o SSL no tráfego pode ser utilizada para encriptar os dados da sessão e com essa opção o tráfego será somente pela porta que foi determinada, no nosso caso 37775. O SSH só é utilizado para autenticar, depois disso é aberta uma nova porta por onde passam os dados. Essa conexão normalmente não é encriptada.
Para finalizar, podemos criar um ícone na área de trabalho, abrir a janela de configurações avançadas, ou simplesmente finalizar o processo e iniciar nossa conexão.