Menu Chiudi

Pillola #20: Spegnimento forzato Windows, vecchia versione, virtualizzato tramite Proxmox

Nota: questa guida riguarda le vecchie versioni di Windows. Per le più recenti basta usare QEMU-Guest-Agent: https://pve.proxmox.com/wiki/Qemu-guest-agent#Windows
I server Microsoft purtroppo non gestiscono in modo uniforme (XP ha un comportamento, 2000 un’altro, 2003 un’altro ancora…) la modalità “gracefully stop” e pertanto si è scelto di installare su di ogni server Microsoft virtualizzato il software poweroff.

Poweroff è liberamente scaricabile dal seguente indirizzo:

http://users.telenet.be/jbosman/applications.html

LATO SERVER M$
– copiare il file “poweroff.exe” in una qualsiasi cartella (es. c:\programmi\poweroff)
– eseguirlo almeno una volta
– configurare la sezione “Select computer” impostando “Local Computer”
– configurare la sezione “Action” impostando il valore “No action”
– configurare la sezione “Options” impostando i valori “Force application to close”, “Visible in tray”, “Allow cancel”, “Allow remote control”
– selezionare “Settings” nella sezione “Options” e impostare la password di accesso da utilizzare per lo spegnimento (es. lamiasuperpasswordsegretissimaesequalcunoprovaacrackarlaglispezzolebraccine)
– configurare la sezione “When” impostando il valore “Immediate”
– selezionare la voce di menu “Services / Create services”
– selezionare la voce di menu “Service / Save settings to service”
– chiudere l’applicativo tramite il pulsante “Close”

LATO PROXMOX, è stato installato “expect” per gestire le comunicazioni tra host e server virtualizzati tramite apposito script.

apt-get install expect

e utilizzo il seguente script per forzare lo spegnimento del server M$:

cat /usr/bin/spegniserverms.sh 
#!/usr/bin/expect

# procedure to attempt connecting; result 0 if OK, 1 otherwise
proc connect {} {
  expect {
    "201 Welcome to Poweroff 3.0.1.3 created by Jorgen Bosman" {
        send "PASSWORD lamiasuperpasswordsegretissimaesequalcunoprovaacrackarlaglispezzolebraccine\r"
        expect {
           "250 OK" {
                return 0
            }
        }
     }
  }
  # timed out
  return 1
 }

set nomeserver [lindex $argv 0]
if { $nomeserver == "" }  {
   puts "Utilizzo: \n"
   exit 0
 }

set timeout 5
spawn telnet [lindex $argv 0] 3210

set rez [connect ]
if { $rez == 0 } {
   send "ACTION shutdown\r"
   expect "250 OK"
   send "DOIT\r"
   expect "250 OK"
   send "QUIT\r"
   expect eof
   exit 0
 }
puts "\nErrore di connessione al server $nomeserver\n"
exit 0
chmod 770 /usr/bin/spegniserverms.sh

utilizzo la seguente sintassi per forzare lo spegnimento del server

spegniserver IPDELSERVER
WordPress Appliance - Powered by TurnKey Linux