Seite 1 von 1

Automatischer ShutDown ESX 5i Host 5.0

Verfasst: 08.01.2013, 23:24
von wilfriedw
Ich möchte über einen CronJob erreichen, das mein ESX-Host täglich um 22:00 herunterfährt. Hierzu habe ich folgenden Link gefunden:http://www.sysbus.eu/?p=2669

Hierzu folgendes:
Die Datei /var/spool/cron/crontabs/root ist schreibgeschützt.
Die Datei bzw. der Pfad /etc/rc.local.d/local.sh gibt es bei mir nicht
Bei mir gibt es 2 Dateien unter /etc 1x rc.local und 1x local.sh
In beiden Dateien habe ich folgende Anweisung eingefügt: (nur mit anderer Uhrzeit)
echo “0 23 * * * /bin/halt” >> /var/spool/cron/crontabs/root

Bis jetzt ALLES ohne Erfolg. Die Einträge habe ich mit dem vi vorgenommen und auch abgespeichert. Habe noch festgestellt, das nach einem gewollten Neustart des Servers der Eintrag in der local.sh weg war.
?? Was mache ich falsch. - Danke für jede Hilfe/Unterstützung
PS: ?? Gibt es auch eine Möglichkeit die VM-Gäste automatisch herunter zufahren.
!! Habe keinerlei Erfahrung mit Linux bzw. Skripting.

Verfasst: 09.01.2013, 08:07
von Klaus_Urban
Hallo wilfried,

hier meine /etc/rc.local

Code: Alles auswählen

=================================

#!/bin/sh

export PATH=/sbin:/bin

log() {
   echo "${1}"
   /bin/busybox logger init "${1}"
}

# execute all service retgistered in ${rcdir} ($1 or /etc/rc.local.d)
if [ -d "${1:-/etc/rc.local.d}" ] ; then
   for filename in $(find "${1:-/etc/rc.local.d}" | /bin/busybox sort) ; do
      if [ -f "${filename}" ] && [ -x "${filename}" ]; then
         log "running ${filename}"
         "${filename}"
      fi
   done
fi


# Hier wird die /var/spool/cron/crontabs/root um die Sicherung erweitert.
# Die Zeit wird in UTC eingegeben. Also eine Stunde früher.
# =========================================================

kill $(cat /var/run/crond.pid)

/bin/busybox echo "00 22 * * 1-6 /vmfs/volumes/datastore1/script/Sicherung.sh"  >> /var/spool/cron/crontabs/root
# 22:00 Uhr UTC ist 23:00 Uhr lokale Winterzeit und 00:00 Uhr lokale Sommerzeit

/bin/busybox crond



=================================================================


Klaus



[Moderator]
{Code}{/Code}

Verfasst: 09.01.2013, 08:08
von irix
Die Anleitung ist doch fuer 5.1 und du hast einen 5.0? Des Weiteren war in der Anfangszeit der VM Shutdown im kostenlosen vSphere Hypervisor defekt und wurde erst mit einem Patch oder dem u1 wieder funktionsfaehig gemacht.

Gruss
Joerg

Verfasst: 09.01.2013, 08:23
von Klaus_Urban
Hallo irix,

> Die Anleitung ist doch fuer 5.1 und du hast einen 5.0?

das script funktioniert auch auf einem 5.0.

> Des Weiteren war in der Anfangszeit der VM Shutdown im kostenlosen
> vSphere Hypervisor defekt und wurde erst mit einem Patch oder dem u1
>wieder funktionsfaehig gemacht.

Ok, u1 ist natürlich installiert.

Klaus

Hat funktioniert

Verfasst: 09.01.2013, 10:59
von wilfriedw
Vielen Dank,
hat nach dem Update funktioniert.
Gibt es nun auch eine Möglichkeit, die entsprechenden Gäste (VMs) automatisch herunter zu fahren. Oder geht das nur mit Windows Tools wie pshutdown ?

Verfasst: 09.01.2013, 11:11
von irix
Host->Configuration->VM Startup/Shutdown aktivieren und konfigurieren.

Gruss
Joerg

Host->Configuration->VM Startup/Shutdown aktivieren un

Verfasst: 09.01.2013, 11:26
von wilfriedw
Hallo Jörg,

also unter Host -> Konfiguration gibt es den Punkt "Software". Darunter:
VM starten/herunterfahren. Hier kann ich aber nur die Standardverzögerung beim Aus bzw. Einschalten einrichten. Oder bin ich hier an der falschen Seite ??

- Danke

Verfasst: 09.01.2013, 11:31
von Klaus_Urban
Hallo Wilfried,
hier das Script zum Herunterfahren einer VM.

Code: Alles auswählen

#!/bin/sh

VM_NAME="APServer"
/bin/vim-cmd vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/   /g' | awk -F'   ' '{print "\""$1"\";\""$2"\";\""$3"\""}' |  sed 's/\] /\]\";\"/g' | sed '1,1d' > /tmp/vms_list
VM_ID=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`
/bin/vim-cmd vmsvc/power.shutdown ${VM_ID} > /dev/null 2>&1


Klaus



[Moderator]
{Code}{/Code}

Verfasst: 09.01.2013, 12:03
von Klaus_Urban
Nachtrag,
> also unter Host -> Konfiguration gibt es den Punkt "Software". Darunter:
> VM starten/herunterfahren. Hier kann ich aber nur die Standardverzögerung beim Aus
> bzw. Einschalten einrichten. Oder bin ich hier an der falschen Seite ??

Nein,
Automatisches Starten und Herunterfahren zulassen,
Aktion beim Herunterfahren: Herunterfahren des Gastes

Klaus

Re: Host->Configuration->VM Startup/Shutdown aktiviere

Verfasst: 09.01.2013, 12:34
von irix
wilfriedw hat geschrieben:Hallo Jörg,

also unter Host -> Konfiguration gibt es den Punkt "Software". Darunter:
VM starten/herunterfahren. Hier kann ich aber nur die Standardverzögerung beim Aus bzw. Einschalten einrichten. Oder bin ich hier an der falschen Seite ??

- Danke


Nein, du bist nicht an der falschen Stelle. Im deutschen und auf einem Standalone ist die Menufuehrung eine andere. Neben der Startverzoegerung kannst du doch unten auch die Reihenfolgen einstellen bzw. ueberhaupt definieren das die VM starten sollen.

Gruss
Joerg

Host->Configuration->VM Startup/Shutdown aktivieren

Verfasst: 09.01.2013, 13:40
von wilfriedw
!!! Vielen Dank an ALLE für die super Unterstützung.
Hab den Eintrag gefunden.
Das mit dem Skript werde ich noch testen. Ist das ein Cronjob bzw. muss der Eintrag
in die rc. local ??

Verfasst: 09.01.2013, 13:54
von Klaus_Urban
Hallo Wilfried,

>Das mit dem Skript werde ich noch testen.
> Ist das ein Cronjob bzw. muss der Eintrag in die rc. local ??

das ist erst mal ein script zum herunterfahren einer VM.
Ob du ihn als cronjob nutzt, ist deine Sache.
Ich nutzt das Script in Verbindung zur Datensicherung.
Also VM herunterfahren, VM sichern, VM starten.
Die Datensicherung ist ein Cronjob.

Klaus

Verfasst: 09.01.2013, 17:46
von albiderbaer
Hallo an die Cracks,

nur mal so eine Frage zwischendurch: Kann man diese Script auch im Zusammenhang mit einer APC Managementkarte verwenden, so dass bei Stromausfall die VM heruntergefahren werden?

Mit dem vma geht es ja irgendwie nicht.

:oops:

Danke im voraus.

Thomas

Verfasst: 09.01.2013, 18:08
von mbreidenbach
APC hat inzwischen ein Zusatzskript welches von PCNS aus aufgerufen die VMs runterfährt.

http://www2.schneider-electric.com/reso ... onment.pdf

Verfasst: 10.01.2013, 17:33
von albiderbaer
@mbreidenbach

leider funktioniert das Script auf dem vma bei mir nicht.
Wenn ich das Script von Hand starte mittels sudo ./bin/shutdownvms.sh
dann erscheint folgende Fehlermeldung:

./bin/shutdownvms.sh: line 19: unexpected EOF while looking for matching `"´
./bin/shutdownvms.sh: line 29: syntax error: unexpected end of file

In der shutdownvms.sh habe ich als Host die IP-Adresse des ESXi und vi-admin als username mit dessen Passwort eingetragen

Schade eigentlich. Bin über jeden Rat dankbar.

Gruß Thomas

Verfasst: 10.01.2013, 18:22
von Dayworker
Mit welchem Programm hast du das Script eingetragen?
EOL-Fehler sind ein bekanntes Problem, wenn man eine Datei unter Windows oder Linux bearbeitet und dabei nicht das jeweilige Zeilenendekennzeichen beachtet. Während unter Linux ein "LF" ausreicht, will Windows ein "CR+LF" am Zeilenende sehen. Viele Editoren unter Windows wie Notepad++ können beides verarbeiten und bieten auch eine Konvertierung nach Windows, Linux oder MacOS an. Unter Linux und MacOS kann man feherhafte Zeilenendezeichen auch problemlos auf der Ba$h oder Terminal bearbeiten.

Verfasst: 10.01.2013, 21:04
von albiderbaer
Ich habe die Datei mit dem Winscp-eigenen Editor bearbeitet.

Kann ich Datei diesbezüglich nochmals prüfen und korrigieren und wenn ja wie?

Verfasst: 10.01.2013, 21:07
von albiderbaer
Mit vi kenne ich mich nicht so aus und ein Editor unter Windows wäre mir am liebsten.

Irgendwo habe ich allerdings gelesen, dass PCNS nicht richtig funktioniert und das würde ja leider passen...

Verfasst: 13.01.2013, 11:43
von albiderbaer
Also ich habe es jetzt nochmals mit notepad++ probiert mit dem gleichen Ergebnis: gleich Fehlermeldung und nichts passiert auf dem ESXi.
Das Skript scheint nicht zu funtionieren.

Verfasst: 13.01.2013, 11:57
von Klaus_Urban
Hallo albiderbaer
teste mal mein Script.
Da werden zuerst 3 VM's heruntergefahren und nach 2 Minuten des ESXi ausgeschaltet.


Code: Alles auswählen

#!/bin/sh

VM_NAME="APServer"
/bin/vim-cmd vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/   /g' | awk -F'   ' '{print "\""$1"\";\""$2"\";\""$3"\""}' |  sed 's/\] /\]\";\"/g' | sed '1,1d' > /tmp/vms_list
VM_ID=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`
/bin/vim-cmd vmsvc/power.shutdown ${VM_ID} > /dev/null 2>&1

VM_NAME="XP-Pro"
/bin/vim-cmd vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/   /g' | awk -F'   ' '{print "\""$1"\";\""$2"\";\""$3"\""}' |  sed 's/\] /\]\";\"/g' | sed '1,1d' > /tmp/vms_list
VM_ID=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`
/bin/vim-cmd vmsvc/power.shutdown ${VM_ID} > /dev/null 2>&1

VM_NAME="NFS-Server"
/bin/vim-cmd vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/   /g' | awk -F'   ' '{print "\""$1"\";\""$2"\";\""$3"\""}' |  sed 's/\] /\]\";\"/g' | sed '1,1d' > /tmp/vms_list
VM_ID=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`
/bin/vim-cmd vmsvc/power.shutdown ${VM_ID} > /dev/null 2>&1

sleep 120
/bin/halt


Klaus



[Moderator]
{Code}{/Code}

Verfasst: 13.01.2013, 13:37
von ~thc
@Klaus

Die zwei Zeilen

Code: Alles auswählen

/bin/vim-cmd vmsvc/getallvms | sed 's/[[:blank:]]\{3,\}/ /g' | awk -F' ' '{print "\""$1"\";\""$2"\";\""$3"\""}' | sed 's/\] /\]\";\"/g' | sed '1,1d' > /tmp/vms_list
VM_ID=`grep -E "\"${VM_NAME}\"" /tmp/vms_list | awk -F ";" '{print $1}' | sed 's/"//g'`


lassen sich ersetzen durch

Code: Alles auswählen

VM_ID=`/bin/vim-cmd vmsvc/getallvms | grep ${VM_NAME} | awk '{print $1}'`

Verfasst: 14.01.2013, 16:45
von albiderbaer
@Klaus
@~thc

vielen Dank für Eure Hilfe
:grin:

Die Frage ist nur wo dieses Skript abgearbeitet wird. Auf dem vMA scheint es die Dateien /bin/vim-cmd bzw. /bin/halt nicht zu geben. Output: No such File or Directory
Also gehe ich davon aus, dass das Script auf dem Esxi gestartet werden muss??
Bloß dann ist die Frage, wie ich das mit dem mit der APC-Managementkarte verknüpfe.

Gruss Thomas

Verfasst: 14.01.2013, 20:50
von ~thc
@albi

Meine Antwort bezog sich nur auf das Script von Klaus, welches sich wiederum eher auf die ursprüngliche Fragestellung des Threads bezieht und auf einem ESXi läuft.

Wenn du auf der vMA keine Unix-kompatiblen Dateien erzeugen möchtest, kannst du die unter Windows erzeugte Datei mit einem FTP-Programm wie z.B. Filezilla im "ASCII"-Modus auf die vMA hochladen. Dabei wird das (DOS/Unix-) Format angepasst.

Verfasst: 15.01.2013, 09:56
von Klaus_Urban
Hallo albiderbaer
>Die Frage ist nur wo dieses Skript abgearbeitet wird.
>Also gehe ich davon aus, dass das Script auf dem Esxi gestartet werden muss??

Richtig

>Bloß dann ist die Frage, wie ich das mit dem mit der APC-Managementkarte verknüpfe.

ssh root@ESXi-IP '/bin/ash -s' < /vmfs/volumes/datastore1/script/Ausschalten.sh
Das Problem wird die Passwortübergabe sein.

Per Windows VM funktioniert es per Plink.exe
start plink.exe -ssh -pw ESXI-Passwort -2 root@ESXi-IP "/vmfs/volumes/datastore1/script/Ausschalten.sh"

Klaus

Verfasst: 15.01.2013, 10:13
von irix
Es gibt mittlerweile ein "esxcli" Plugin welches das Programm um die Faehigkeit erweitert Remote Commands auszufuehren ohne das man den SSH aufmachen muss. Wenn ich es richtig gelesen habe tunnelt man die API und es wird explizit ghettoVCB2 erwaehnt.

Ich vermute das du so auch dein Shutdown Script antriggern kannst von einer VM oder externem System welche deinen APC Agent und vSphere CLI installiert hat.

http://www.v-front.de/2013/01/release-e ... trary.html

Gruss
Joerg