Linux-VMs auf ESX via Powershell herunterfahren
Hallo zusammen,
ich bin grade dabei ein Skript zu erstellen, welches nach Auslösung gewisser Parameter unsere virtuellen Server auf dem ESX herunterfahren soll und anschließend die ESX. Wir möchten dabei gerne die VMs gezielt herunterfahren und erst wenn dies abgeschlossen die ESX-Server.
Ich habe den Beitrag hier gefunden. Nach diesem Beitrag müsste das herunterfahren der ESX im letzten Schritt mittels
Woran es grade scheitert ist das herunterfahren der VMs. Einen Großteil der VMs kann ich einfach und bequem mittels PS-Befehl stop-computer herunter fahren. Es verbleiben noch einige wenige VMs auf denen ein Linux-System läuft. Diese Systeme stammen von Herstellern und dienen verschiedenen Zwecken. Fakt ist: Die Installation von PowerShell auf Linux ist bei diesen Geräten nicht möglich.
Gemäß des Artikels bei VMWare habe ich mich mittels SSH auf dem Server eingeloggt. der Befehl führt erfolgreich dazu, dass der ESX-Server die entsprechende VM herunterfährt.
Mein Gedanke war, das ganze jetzt zu kombinieren und daraus folgendes zu formen:
Ich erhalte daraufhin jedoch folgende Meldung:
Auch nachdem ich mich jetzt mehrfach durch die PLINK.EXE-Dokumentation gequält habe, verstehe ich nicht was ich an der Stelle falsch mache. Vielleicht kann der eine oder andere mir einen Tipp geben.
Gruß
Doskias
Nachtrag: Titel von Linux-VMs auf ESX via Powershell herunterfahren auf Linux-VMs auf ESX via Powershell herunterfahren geändert
ich bin grade dabei ein Skript zu erstellen, welches nach Auslösung gewisser Parameter unsere virtuellen Server auf dem ESX herunterfahren soll und anschließend die ESX. Wir möchten dabei gerne die VMs gezielt herunterfahren und erst wenn dies abgeschlossen die ESX-Server.
Ich habe den Beitrag hier gefunden. Nach diesem Beitrag müsste das herunterfahren der ESX im letzten Schritt mittels
pLink.exe -ssh -pw MeinKennwort myuser@192.168.0.1 poweroff -f
durchführbar sein. Ich habe derzeit leider keinen Test-ESX, so dass ich es nicht testen kann. Wir werden das ganze irgendwann außerhalb der Arbeitszeit einmal testen, dann sehe ich ob es funktioniert.Woran es grade scheitert ist das herunterfahren der VMs. Einen Großteil der VMs kann ich einfach und bequem mittels PS-Befehl stop-computer herunter fahren. Es verbleiben noch einige wenige VMs auf denen ein Linux-System läuft. Diese Systeme stammen von Herstellern und dienen verschiedenen Zwecken. Fakt ist: Die Installation von PowerShell auf Linux ist bei diesen Geräten nicht möglich.
Gemäß des Artikels bei VMWare habe ich mich mittels SSH auf dem Server eingeloggt. der Befehl
vim-cmd vmsvc/power.shutdown 40
Mein Gedanke war, das ganze jetzt zu kombinieren und daraus folgendes zu formen:
plink.exe -ssh -pw [Kennwort] Benutzer@ESX-Server vim-cmd vmsvc/power.shutdown 40
Ich erhalte daraufhin jedoch folgende Meldung:
plink.exe : -- Keyboard-interactive authentication prompts from server: ------------------
In Zeile:1 Zeichen:1
plink.exe -ssh-pw [Kennwort] Benutzer@ESX-Server vim-cmd vmsvc/power.shutdo ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : NotSpecified: (-- Keyboard-int...---------------:String) , RemoteException
FullyQualifiedErrorId : NativeCommandError
-- End of keyboard-interactive prompts from server ---------------------------
In Zeile:1 Zeichen:1
plink.exe -ssh-pw [Kennwort] Benutzer@ESX-Server vim-cmd vmsvc/power.shutdo ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : NotSpecified: (-- Keyboard-int...---------------:String) , RemoteException
FullyQualifiedErrorId : NativeCommandError
-- End of keyboard-interactive prompts from server ---------------------------
Auch nachdem ich mich jetzt mehrfach durch die PLINK.EXE-Dokumentation gequält habe, verstehe ich nicht was ich an der Stelle falsch mache. Vielleicht kann der eine oder andere mir einen Tipp geben.
Gruß
Doskias
Nachtrag: Titel von Linux-VMs auf ESX via Powershell herunterfahren auf Linux-VMs auf ESX via Powershell herunterfahren geändert
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4324066130
Url: https://administrator.de/contentid/4324066130
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
11 Kommentare
Neuester Kommentar
@Doskias
Warum nicht einfach so:
https://community.spiceworks.com/how_to/171224-how-to-shutdown-remote-co ...
Kreuzberger
Warum nicht einfach so:
https://community.spiceworks.com/how_to/171224-how-to-shutdown-remote-co ...
Kreuzberger
VMware PowerCLI™ ist dein Freund
Stop-VM
Stop-VMHost
p.s. da fehlt der Parameter -batch
Stop-VM
Stop-VMHost
p.s. da fehlt der Parameter -batch
plink.exe -ssh -pw [Kennwort] -batch Benutzer@ESX-Server "vim-cmd vmsvc/power.shutdown 40"
Zitat von @Doskias:
Fast
Danke, so gehts.
Nöp die Optionen gehören vor den host ...Fast
plink.exe -ssh -pw [Kennwort] Benutzer@ESX-Server -batch "vim-cmd vmsvc/power.shutdown 40
Usage: plink [options] [user@]host [command]
Bier fehlt das Anführungszeichen am Ende und die Option gehört vor den Host, Anführungszeichen sind zwar nicht zwingend aber bei manchen Befehlen nötig.
Bin etwas schreibfaul. Aus meinen PS extrahiert.
Hier mit ppk File.
ACHTUNG: Damit den Host vertraut wird, ggf. vorher einmal Putty so starten und "Accept" anklicken. Sonst wird die Verbindung nicht zu Stande kommen.
Befehle kann man durch ";" verketten.
Ansosnten "cmd /c" weg und in die Variable schauen. Dann kannst du den String auch jederzeit so in Batch abfeuern.
Hier mit ppk File.
ACHTUNG: Damit den Host vertraut wird, ggf. vorher einmal Putty so starten und "Accept" anklicken. Sonst wird die Verbindung nicht zu Stande kommen.
Befehle kann man durch ";" verketten.
Ansosnten "cmd /c" weg und in die Variable schauen. Dann kannst du den String auch jederzeit so in Batch abfeuern.
# putty Connection String
[string]$puttyUser = "root@web02"
[string]$puttyKeyFile = "C:\scripts\putty-private.ppk"
[string]$puttyPlink = "C:\ProgramData\chocolatey\bin\plink.exe"
[string]$puttyCommand = "systemctl restart tomcat8"
[string]$puttyCommandString = $($puttyPlink)+" "+$puttyUser+" -batch -i "+$puttyKeyFile+" ("+$puttyCommand+")"
cmd /c $puttyCommandString
Zitat von @Doskias:
Wie ist das hier. Wird hier auch einfach ausgeschaltet oder sauber herunter gefahren?
Wie ist das hier. Wird hier auch einfach ausgeschaltet oder sauber herunter gefahren?
https://scriptigator.com/2020/11/22/how-to-restart-reset-shutdown-powero ...
Da sind nochmal die Befehle alle erklärt.
Hier mal ein Beispiel wenn die Tools abgeschossen wurden und man die Maschine dann automatisch rebooten möchte.
ACHTUNG: Nur fix für eine. Man kann auch den Status für die Tools, "Needs Consolidation" etc. für alle abfragen und sich einen Array alle Maschinen aufbauen:
Import-Module -Name VMware.VimAutomation.Core
$Server = "vcenter"
Connect-VIServer -Server $Server -User root@vcenter.xy.zz -Password geheim
$vm = 'mysql01'
$toolsStatus = (Get-VM $VM).extensiondata.Guest.ToolsStatus
if (($toolsStatus -eq "toolsNotRunning") ) { Restart-VM $vm -Confirm:$false }
Disconnect-VIServer -Server $Server -Confirm:$false
Hier mal ein Online Example, was man durch die Schleife auch auf VMs anwenden kann, die man zvor runterfährt, etwas mit ihnen tut und dann hochfährt.
ACHTUNG: Hier fehlt die Hälfte. Zuvor wurde Consolidate abgefeuert. Man kann über Get-Task sehen, wie weit die jeweiigen Aufgaben sind. Hier wird nur von einen laufenden Task ausgegangen.
Lässt sich noch verfeinern. Nach Ende der Aktion kann man z.B. die VM wieder starten etc.
Nur ein grobes Beispiel.
$task01 = Get-Task -Server $Server | ? { $_.State -eq 'Running' -and $_.Name -eq 'ConsolidateVMDisks_Task' }
$task01.Description
$task01.Name
$task01.PercentComplete
while('Running','Queued' -contains $task01.State){
Write-Progress -Activity 'Creating VM' -PercentComplete $task01.PercentComplete
$task01.PercentComplete
$task01.Description
$task01.Name
$task01 = Get-Task -Id $task01.Id
Start-Sleep -Seconds 5
}
ALSO ich würde ja, wenn die VMware-Tools auf den VMs installiert sind, den Befehl Shutdown-VMGuest nutzen wollen..
https://vdc-repo.vmware.com/vmwb-repository/dcr-public/3de791f2-edaf-4cd ...
auf diese Weise habe ich gerade ein Debian 11 als auch einen alten Win 2008R2 sauber heruntergefahren
Hab mir gerade die Frage nochmal genau durchgelesen.
Was ist mit Autostart und - in reverse - Auto Shudown? Dann passiert alles in einen Rutsch.
https://www.youtube.com/watch?v=qWyuXa85AIc
https://vmguru.com/2013/06/how-to-shutdown-esxi-host-in-case-of-a-power- ...
Was ist mit Autostart und - in reverse - Auto Shudown? Dann passiert alles in einen Rutsch.
https://www.youtube.com/watch?v=qWyuXa85AIc
https://vmguru.com/2013/06/how-to-shutdown-esxi-host-in-case-of-a-power- ...
Zitat von @Doskias:
Ich habe mit Stop-VM und einem "unwichtigen" Windows-Server einmal rumgespielt. Während vim-cmd vmsvc/power.shutdown 40 die VM mit der ID 40 sauber herunterfährt und ich sehen kann wie das System heruntergefahren wird, so führt Stop-VM zu einem abruptem Ende des Betriebs. Sprich: Hier erfolgt kein sauberes herunterfahren, sondern ein unerwartetes Ausschalten. Nach dem Neustart der VM werde ich entsprechend auch gefragt, wieso das Gerät nicht sauber herunter gefahren wurde. Also grundsätzlich: Ja, ich kann damit die VMs ausschalten, aber wie fahre ich sie gezielt und sauber herunter?
Ich habe mit Stop-VM und einem "unwichtigen" Windows-Server einmal rumgespielt. Während vim-cmd vmsvc/power.shutdown 40 die VM mit der ID 40 sauber herunterfährt und ich sehen kann wie das System heruntergefahren wird, so führt Stop-VM zu einem abruptem Ende des Betriebs. Sprich: Hier erfolgt kein sauberes herunterfahren, sondern ein unerwartetes Ausschalten. Nach dem Neustart der VM werde ich entsprechend auch gefragt, wieso das Gerät nicht sauber herunter gefahren wurde. Also grundsätzlich: Ja, ich kann damit die VMs ausschalten, aber wie fahre ich sie gezielt und sauber herunter?
Stop-VM ist das Äquivalent zum Power Off, was du suchst ist Shutdown-VMGuest.
VG,
Thomas