Força o desligamento da VM do Windows via ACPI ou script

1

No trabalho, temos uma VM do Windows Server 2003 que queremos desligar quando o sistema operacional do host (Linux) é desligado. Temos esse trabalho, exceto quando um usuário fez login e bloqueou a tela. Parece que o Windows não será desligado quando a tela estiver bloqueada.

Estamos investigando maneiras de impedir que o bloqueio automático aconteça quando o usuário está inativo, mas isso não é realmente ideal. Existe algo que possamos configurar ou de alguma forma podemos roteirizá-lo para que o Windows seja desligado, não importando o que o usuário possa fazer?

Se não fecharmos o Windows corretamente arriscamo-nos a corromper toda a VM. Em nosso ambiente, uma vez que o sistema operacional host recebe seu sinal ACPI, temos 120 segundos para desligar tudo antes que o sistema seja desligado à força.

Nós pesquisamos isso um pouco, mas sem sorte até agora. Ainda estamos procurando por essa configuração de registro de armas fumegantes.

    
por John Kugelman 13.08.2013 / 23:02

2 respostas

1

Use a função de desligamento remoto no MSRPC, com o sinalizador "force" para substituir sessões bloqueadas ou processos suspensos. Se o Samba estiver instalado, ele pode ser usado como:

net rpc -S vm-hostname shutdown -t 0 -f

(O comando equivalente do Windows é shutdown -m \vm-hostname -s -t 0 -f .)

Alternativamente, ssh na VM do Windows e execute shutdown -s -t 0 -f dessa maneira. Existem vários servidores SSH gratuitos para o Windows, como o Bitvise WinSSHd.

Todos os três métodos (mesmo se você executar shutdown sobre SSH ou localmente) exigem uma conta com o privilégio SeRemoteShutdown , um administrador por padrão.

    
por 13.08.2013 / 23:18
0

O Windows tem um recurso EMS que lhe dá acesso via porta serial. Embora você possa realmente obter uma cmd.exe da instância em funcionamento por meio da serial, também é possível efetuar login em um console simples que permite emitir um comando de desligamento também. Este console deve funcionar mesmo se o sistema travar ou sua rede virtual estiver desligada ou terrivelmente corrompida (você pode até obter o último texto BSOD IIRC).

Foi quando eu estava executando o Windows Server 2003 no qemu, que permitia o redirecionamento da COM1 virtual para uma porta semelhante à do tipo "telnet". Então eu pude usar expect para emitir uma seqüência limpa de desligamento para a VM (e eu também poderia usar o telnet para falar diretamente com ele se eu quisesse).

    
por 13.08.2013 / 23:41