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.