Encerrando uma estação de trabalho do Windows remotamente (do Linux)

2

Eu tenho um sistema composto por, digamos, 10 estações de trabalho do Windows 7 Professional, unidas a um domínio.

Como parte de um procedimento de desligamento do sistema de "emergência", eu gostaria de um mecanismo de acionamento de um desligamento remoto, a partir de um controlador Linux (que, por sua vez, é uma ferramenta de orquestração de serviço). A palavra "emergência" está entre aspas porque não é realmente uma emergência, mas ainda precisa de um mecanismo diferente de simplesmente dizer aos usuários para desligarem as estações de trabalho.

Então, eu olhei para psexec , que é quase ideal, exceto que só parece ser acionável a partir de outra máquina Windows. .. Eu suponho que não é impossível ter um servidor windows acionando o procedimento de desligamento da estação de trabalho, mas isso não é o ideal.

Eu acho que uma opção é instalar o Cygwin e o OpenSSH, mas, francamente, isso parece volumoso .

O que eu gostaria, idealmente .. É um programa que é executado como um serviço, com privilégios de Administrador local (ou de domínio), escutando em uma porta, para uma chamada de API RESTful criptografada por SSL como http://workstation:8888/admin/shutdown?key=secretsharedkey .

Preciso escrever algo em C # .net ou existe uma ferramenta lá fora para o acionamento em várias plataformas de um desligamento de uma estação de trabalho do Windows?

    
por Tom O'Connor 17.09.2013 / 23:32

3 respostas

5

Que tal usar a ferramenta net do pacote Samba?

Por exemplo:

net rpc shutdown -S workstation1 -U Administrator -w example.com

Você pode precisar de opções de linha de comando um pouco diferentes, como -k , para autenticar com o Kerberos; verifique a página do manual.

    
por 17.09.2013 / 23:49
3

Você pode usar o winexe . Ele usa uma chamada RPC para instalar um serviço no computador de destino e, em seguida, usa esse serviço para executar comandos nele. Você pode especificar as credenciais e o servidor Linux não precisa ser um membro do domínio.

Tenha em atenção que é baseado no código do Samba;)

    
por 18.09.2013 / 00:25
0

O RPC é o caminho, mas pode haver mais configurações a serem feitas, especialmente para o Windows Vista, o Windows 7 e outras versões do Windows, para permitir o desligamento remoto:

A) Parte da configuração para fazer na máquina Win7:

1) execute "secpol.msc"

  • na árvore de programas, abra "Configurações de segurança / Políticas locais / Atribuição de direitos do usuário"

  • Encontre a entrada "Forçar o desligamento de um sistema remoto"

  • Edite a entrada, adicione o usuário CONCRETE que será usado para o encerramento (ex: nouknouk)

2) Execute regedit.exe como administrador

  • localize HKLM / SOFTWARE / Microsoft / Windows / CurrentVersion / Políticas / Sistema

  • crie um novo valor DWORD (32) do registro chamado "LocalAccountTokenFilterPolicy" e, em seguida, atribua-lhe o valor '1'

3) Configure o serviço de registro remoto:

  • abra “cmd.exe” como administrador

  • execute os dois comandos a seguir:

    sc config RemoteRegistry start = automático

    sc start RemoteRegistry

B) Parte da configuração para fazer na máquina linux:

1) instale o pacote "samba-common":

Depende da sua distribuição linux, mas para o Debian e derivados (Ubuntu, Linux Mint, ...), o comando apt-get pode ser executado assim:

apt-get instala o samba-common

2) Para realmente desligar o windowsmachine do linux, execute o seguinte comando:

net rpc shutdown -f -t 0-C 'message' -U userName% senha -I xxx.yyy.zzz.ttt

Onde:

  • '- f' significa 'força' o desligamento (eu acho que é obrigatório)

  • '- t 0' é o atraso antes de fazê-lo (0 significa 'agora').

  • '- U usuário% senha' é o usuário local e sua senha na máquina do Windows (aquela que foi liberada para fazer o desligamento remoto no ponto A).

  • '- I' é o endereço IP da máquina do Windows para ser desligado.

por 15.11.2014 / 16:07