Existe uma maneira leve de iniciar um aplicativo em uma máquina win7 remota do linux?

3

Estou tentando encontrar uma maneira leve de iniciar um aplicativo em uma máquina Windows7 remota a partir do linux.

Seguem as minhas condições de limite:

  • O sistema Windows7 está localizado na mesma sub-rede na mesma LAN que a máquina Linux.
  • Se necessário, uma conta de usuário local com privilégios de administrador está disponível nessa máquina e a senha é conhecida.
  • O aplicativo que deve ser iniciado na máquina do Windows precisa mostrar uma janela. Não é apenas um processo.
  • Nenhuma interação adicional deve ser necessária no sistema windows7.
  • Eu não quero instalar um cygwin completo no sistema.
  • Tentei usar o equivalente linux do psExec (winexe), mas ainda precisava confirmar alguns avisos na máquina windows7.

Usando psExec de outra máquina windows7 funciona, mas eu tenho que iniciar um processo na máquina windows a partir de um host linux.

Editar:

Estou livre para instalar software adicional, mas não quero instalar o mysys nem o cygwin.

O aplicativo precisa ser iniciado imediatamente (ou seja, assim que a máquina linux aciona o "iniciar o aplicativo"). O polling IMO não é uma opção.

Como descobri, o aviso windows7 mostra quando deve invocar um comando do winexe é um recurso chamado "sessão 0 isolamento" e não encontrei uma maneira de desativá-lo.

    
por tobsen 25.01.2012 / 21:45

4 respostas

1

RSHD fará exatamente o que você está procurando. Ele pode ser executado no contexto do usuário atualmente conectado, e escuta em uma porta por conexões de entrada de hosts pré-autorizados. Você pode enviar um comando (por exemplo, calc.exe) e fazer com que o aplicativo apareça na área de trabalho do usuário.

Note que existem muitas implementações, e eu não gostaria de recomendar uma sobre a outra, algumas executadas como um serviço, mas você provavelmente precisará encontrar uma que seja executada no contexto do usuário logado para fazer o que você estão perguntando.

Editar em resposta ao comentário:

Eu usei este no passado para fazer exatamente o que você está pedindo. É leve, apenas um binário autônomo.

Em primeiro lugar, no Windows PC crie um arquivo rhosts e salve-o como c:\windowsrhosts (note que este não é um erro de digitação, este arquivo existe na raiz da unidade C:). O arquivo deve conter o FQDN do computador Linux remoto do qual você vai se conectar, seguido do nome de usuário, por exemplo,

remotepc.example.com bryan

Em seguida, crie um arquivo em lote que seja executado no logon, com o seguinte comando

rshd.exe -d

Isso deixará uma janela de prompt de comando, que você pode minimizar.

Faça o download de um cliente RSH no seu PC com Linux (testei apenas usando um cliente Windows RSH )

Acabei de testar e iniciei o calc usando o seguinte comando

rsh windowspc.example.com -l bryan calc

... e apareceu calc.exe na área de trabalho do Windows.

    
por 26.01.2012 / 15:53
1

Eu sei que este segmento tem 3 anos, mas aqui está uma solução que encontrei.

Por alguma razão, o '--interactive = 1' do winexe não se comporta como a opção '-i' do psexec. Com o winexe, o usuário ainda terá que aceitar uma caixa de diálogo "Detecção de serviço interativo".

Uma possível solução é:

1 - usando compartilhamentos smbclient ou CIFS para carregar o psexec na máquina do Windows. 2 - (opcionalmente) fazer o upload do programa GUI que você deseja executar. 3 - executando o programa GUI através do psexec através do winexe. Assim:

winexe --uninstall --interactive=0 -U 'WinAdmin%WinAdminPasswd' //1.2.3.4 '\windows\temp\psexec.exe -i \127.0.0.1 -u WinAdmin -p WinAdminPasswd notepad.exe

O bloco de notas aparecerá com sucesso na área de trabalho do usuário conectado.

Caso a caixa de diálogo "Detecção de serviços interativos" ainda apareça, o serviço deve ser desativado antes e depois reativado:

winexe --interactive=0 -U 'WinAdmin%WinAdminPasswd' //1.2.3.4 'cmd /c sc config UI0detect start= disabled > NUL & sc stop UI0detect > NUL'
// (do your stuff)
winexe --interactive=0 -U 'WinAdmin%WinAdminPasswd' //1.2.3.4 'cmd /c sc config UI0detect start= manual > NUL & sc start UI0detect > NUL'
    
por 20.04.2015 / 02:17
0

Você disse que não quer instalar o cygwin, mas está disposto a instalar qualquer outra coisa no computador com Windows? Você pode instalar um servidor SSH no computador Windows ou instalar o recurso de servidor Telnet (não muito seguro, aconselharia a menos que o computador esteja com segurança de firewall).

Outra opção seria algo mais de um kludge. Depois, poste um arquivo de lote em branco em algum lugar, digamos um compartilhamento de samba no seu computador linux, com acesso de leitura / gravação. Em seguida, crie uma tarefa no computador com Windows 7 que execute outro arquivo de lote a cada 5 minutos. No script mencionado, faça com que a primeira linha baixe seu script em branco para o computador com Windows 7 e a segunda linha chame esse arquivo em lote como script chamando outro script. Normalmente, esse arquivo fica em branco, portanto, quando a tarefa é executada, ele faz o download de um script em branco, depois chama esse script (que não faz nada) e, em seguida, sai. Quando você quer "executar um comando", apenas altere seu script para ter o comando dito como a primeira linha e uma segunda linha que sobrecarrega o script (normalmente em branco) no compartilhamento, sobrescrevendo-o com um arquivo em branco (para evitar que seu comando seja executado) sendo executado uma segunda vez).

Eu acabei de instalar um servidor SSH e SSH, mas acho que isso pode ser uma maneira "pronta para usá-lo" sem a necessidade de instalar um único software no Windows ...

    
por 26.01.2012 / 00:19
-1

Como sobre o cliente RDP ou VNC do linux - por exemplo, Remmina (você pode definir profundidade de tela. cor profunda, até mesmo as credenciais do Windows) ou krdc Para o RDP você não precisa instalar nada - basta habilitar o desktop remoto

    
por 26.01.2012 / 16:12