Instale:
sudo apt-get install samba smbclient telnet
NOTA: usei o apt-get, use o comando da tua distribuição.
Na máquina com o Windows abra o prompt como administrador e execute:
sc config RemoteRegistry start=auto
sc start RemoteRegistry
Dependendo da versão do Windows usamos da criatividade e acrescentamos um registro caso der a mensagem WERR_CALL_NOT_IMPLEMENTED.
Por via das dúvidas, já crie o registro para não perder a viagem e evitar a mensagem.
Pressione a tecla Windows e a tecla "r", abrirá o menu Executar, digite
regedit. Abrirá o editor de registro do Windows.
Navegue pelo caminho:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem
Com System selecionado clique com o botão direito do mouse dentro do espaço branco no lado direito > Novo > Valor DWORD (32 bits) e nomeie como
LocalAccountTokenFilterPolicy e depois clique em cima com o botão direito (opção Modificar...) e modifique o valor para "1". Depois, caso quiser desfazer, é só excluir o registro ou colocar em 0 (zero).
Reinicie a máquina Windows e execute na máquina
Linux:
# net rpc shutdown -C "Não fui com a tua cara, estou me desligando!" -t 60 -f -I 192.168.1.12 -U usuário%senha
O parâmetro -C é opcional, pois somente envia uma mensagem escrita.
O parâmetro -t 60 coloca o tempo de 60 segundos para o desligamento, sem este parâmetro a máquina é desligada na hora.
O parâmetro -f força o desligamento da máquina remota fechando qualquer programa aberto.
O parâmetro -I (i maiúsculo) é o IP da máquina remota.
O parâmetro -U é o usuário e a senha da maquina remota separados pelo símbolo porcentagem (%).
O comando abaixo desliga na hora:
# net rpc shutdown -f -I 192.168.1.12 -U usuário%senha
O mais aconselhável é omitir a senha porque ela será solicitada na linha de comando, o que é mais seguro, pois ninguém verá a senha:
# net rpc shutdown -f -I 192.168.1.12 -U usuário
Enter usuario's password:
Para abortar o desligamento remoto:
# net rpc abortshutdown -f -I 192.168.1.12 -U usuário%senha
No meio disso tudo, pode usar o telnet para verificar se a conexão está indo:
# telnet 192.168.1.12 445
A resposta de que a conexão está indo é:
Trying 192.168.1.12...
Connected to 192.168.1.12.
Escape character is '^]'.
É óbvio que, nesse esquema, as máquinas precisam estar na mesma rede e você precisa ter acesso físico pelo menos uma vez à máquina remota.
Porém, a partir daí o céu é o limite para acessarmos as máquinas remotamente; lembrando que a internet é uma grande rede.