In diesem Artikel werde ich Ihnen zeigen, wie man ein schreibt VMware Autostart Programm mithilfe der Bash -Shell -Skriptsprache und konfigurieren Sie systemd, um die virtuellen Maschinen von VMware Workstation Pro 16 automatisch auf dem BOOT zu starten. Auf diese Weise haben Sie immer noch einen Backup -Plan, wenn VMware Workstation Pro das abfällt Gemeinsame VM Feature for Good. Also lasst uns anfangen.
Inhaltsverzeichnis
Einführung in das VMware Autostart -Programm
Der Hauptzweck der VMware Autostart Programm:
1) Lesen Sie eine Konfigurationsdatei, die aus allen VMware WorkStation Pro 16 VMs besteht, die Sie automatisch zur Bootzeit beginnen möchten.
2) Starten Sie die konfigurierten VMs automatisch zum Startzeit und suspendieren Sie sie vor dem Herunterfahren oder Neustart des Systems.
Um dies zu erreichen, habe ich geschaffen,
1) Eine zentrale VM -Konfigurationsdatei Konfiguration.JSON.
2) Ein Bash -Shell -Skript Auto-Start. Es wird die Konfigurationsdatei gelesen Konfiguration.JSON Um die VMs zu bestimmen, um verwaltet zu werden. Es startet oder wird die konfigurierten VMs abhängig vom Befehlszeilenargument, das dem Shell-Skript zur Laufzeit bereitgestellt wurde.
3) eine Systemd -Einheitsdatei VMware-Autostart.Service. Es wird das Bash -Skript automatisch ausgeführt Auto-Start So starten Sie alle konfigurierten VMs zur Startzeit. Es wird auch das Bash -Skript ausführen Auto-Start So suspendieren die konfigurierten VMs vor dem Abschalten oder Neustart des Systems.
Installation der erforderlichen Abhängigkeiten
Ich habe eine JSON -Datei verwendet Konfiguration.JSON zum Speichern der VMware VM -Konfiguration, die die VMware Autostart Das Programm ermittelt die virtuellen Maschinen, um den Start zu automatisieren.
Um die JSON -Konfigurationsdatei aus dem Bash -Shell -Skript des VMware AutoStart -Programms zu analysieren, habe ich die verwendet JQ Befehl.
Über Ubuntu, Debian, Linux Mint, KDE Neon und andere Debian -basierte Linux -Verteilungen; Sie können installieren JQ mit dem folgenden Befehl:
$ sudo APT installieren Sie JQ -yBei CentOS 8/RHEL 8 können Sie installieren JQ mit dem folgenden Befehl:
$ sudo dnf install jq -yEinmal JQ Führen Sie den folgenden Befehl aus, um festzustellen, ob JQ ist vom Terminal aus zugänglich.
$ JQ --VERSIONSchreiben des VMware Autostart -Programms
In diesem Abschnitt wird Ihnen angezeigt, wie Sie das schreiben können VMware Autostart Programm und erklären, wie es funktioniert.
Erstellen Sie zunächst ein neues Projektverzeichnis /opt/vmware-autostart und erstellen a Behälter/ Unterverzeichnis im Projektverzeichnis wie folgt:
$ sudo mkdir -pv/opt/vmware -autostart/binErstelle eine neue Konfiguration.JSON Datei im Projektverzeichnis /opt/vmware-autostart mit dem folgenden Befehl:
$ sudo nano/opt/vmware-autostart/config.JSONDer Konfiguration.JSON Die Datei führt eine Liste von VMware Workstation Pro 16 VMs, die Sie automatisch mit dem BOOT beginnen möchten.
Ein VMware Workstation Pro 16 VM -Eintrag hat nur 3 Eigenschaften.
Sie können das finden Name und VMXPath der virtuellen Maschine Aus der VMware Workstation Pro 16 App, wie im Screenshot unten markiert.
Nachdem Sie das Konfigurationsdateiformat kennen, schreiben wir die VMware Autostart -Programm Verwenden der Bash -Shell -Skriptsprache.
Erstellen Sie ein neues Bash -Skript Auto-Start im /opt/vmware-autostart/bin Verzeichnis mit dem folgenden Befehl:
$ sudo nano/opt/vmware-autostart/bin/autostartGeben Sie die folgenden Codes -Zeilen in der ein Auto-Start Shell-Skript.
#!/Bin/BashDer Auto-Start Das Bash -Skript sollte wie folgt aussehen.
Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten Auto-Start Bash -Skript.
Hier,
Der msg_auto_answer_disable Und msg_auto_answer_enable Funktionen werden verwendet, um das zu entfernen und festzulegen Nachricht.automatische Antwort Option in der .VMX Datei der VM.
Wenn Nachricht.automatische Antwort ist eingestellt auf WAHR, VMware Workstation Pro 16 Warten auf Benutzereingaben nicht auf Benutzereingaben. Wenn dies nicht festgelegt ist, können Sie nicht in der Lage sein, virtuelle Maschinen im Hintergrund zu starten Auto-Start Skript, wenn eine Benutzerinteraktion erforderlich ist, um zu starten.
Der start_vm Funktion wird verwendet, um eine virtuelle Maschine mit dem zu starten .VMX Datei der virtuellen Maschine. Es druckt auch die erforderlichen Protokollnachrichten auf dem Bildschirm.
Der suspend_vm Funktion wird verwendet, um eine virtuelle Maschine mit dem zu suspendieren .VMX Datei der virtuellen Maschine. Es druckt auch die erforderlichen Protokollnachrichten auf dem Bildschirm.
Einige Variablen sind in den Zeilen 23-25 definiert.
Konfigurationsdatei - Der absolute Weg zur Konfiguration.JSON -Datei.
num_vms - Verwendet JQ Berechnung der Anzahl der in der verfügbaren VMs Konfiguration.JSON Datei.
Aktion - Das erste Argument für Befehlszeilen ist die Aktion, die auszuführen ist. Der Auto-Start Das Skript verwendet es, um zu bestimmen, ob VMs gestartet werden oder VMs ausgesetzt werden sollen.
Die Zeilen 27-42 werden verwendet, um alle verfügbaren virtuellen Maschinen in der Konfiguration.JSON Datei, aktivieren/deaktivieren Nachricht.automatische Antwort Eigenschaft für jede virtuelle Maschine und starten/aussetzen die virtuellen Maschinen.
In der Schleife definieren Zeilen 29-31 einige Variablen.
VM_NAME - Verwendet JQ um das zu bekommen Name Eigenschaft der virtuellen Maschine aus dem Konfiguration.JSON Datei.
VMX_PATH - Verwendet JQ um das zu bekommen VMXPath Eigenschaft der virtuellen Maschine aus dem Konfiguration.JSON Datei.
vm_autostart - Verwendet JQ um das zu bekommen Auto-Start Eigenschaft der virtuellen Maschine aus dem Konfiguration.JSON Datei.
Wenn der Aktionswert startet und VM_Autostart (die Autostart -Eigenschaft in config.JSON) ist wahr, entfernen Sie die Nachricht.automatische Antwort Eigentum aus dem .VMX Datei (falls vorhanden) der virtuellen Maschine, festgelegt Nachricht.automatische Antwort Eigentum an WAHR im .VMX Datei der virtuellen Maschine und starten Sie die virtuelle Maschine.
Wenn der Aktionswert suspendiert ist und vm_autostart (die autostart -Eigenschaft in config.JSON) ist wahr, entfernen Sie die MSG.Autoanswer Eigentum aus dem .VMX -Datei Suspendieren Sie die virtuelle Maschine.
Sobald Sie das erstellt haben Auto-Start Bash -Skript, machen Sie es mit dem folgenden Befehl ausführbar:
$ sudo chmod +x/opt/vmware-autostart/bin/autostartStarten Sie das VMware -Autostart -Programm automatisch im Boot
In diesem Abschnitt erstelle ich einen Systemdienst, damit er die ausführt Auto-Start BASH -Skript automatisch zur Startzeit veröffentlichen.
Erstellen Sie eine neue Datei VMware-Autostart.Service im Projektverzeichnis /opt/vmware-autostart folgendermaßen:
$ sudo nano/opt/vmware-autostart/vmware-autostart.ServiceGeben Sie die folgenden Zeilen in die ein VMware-Autostart.Service Datei.
[Einheit]Sobald Sie fertig sind, drücken Sie + X gefolgt von Y Und um die zu retten VMware-Autostart.Service Datei.
Hier,
ExecStart leitet die Auto-Start Skript mit a Start Befehlszeilenoption zur Startzeit. Also alle virtuellen Maschinen in der verfügbaren Konfiguration.JSON Die Datei wird automatisch im Systemstart gestartet.
ExecStop macht das Gegenteil. Es läuft die Auto-Start Skript mit dem aussetzen Befehlszeilenoption, bevor Sie den Computer herunterfahren oder neu starten. Also alle virtuellen Maschinen in der verfügbaren Konfiguration.JSON Die Datei wird beim Herunterfahren oder Neustart des Systems ausgesetzt.
Der Auto-Start Das Skript wird als Benutzer ausgeführt Shovon und Gruppe Shovon. Sie müssen es durch Ihr Login ersetzen Benutzer und primär Gruppe Name.
Sie können Ihr Login finden Benutzer und primär Gruppe Name mit dem folgenden Befehl:
$ idEine symbolische Verbindung von der VMware-Autostart.Service Datei in der /etc/systemd/system Verzeichnis wie folgt:
$ sudo ln -s/opt/vmware-autostart/vmware-autostart.Service/etc/systemd/system/vmware-autostart.ServiceFühren Sie den folgenden Befehl aus, damit die systemd -Änderungen wirksam werden sollen:
$ sudo systemctl Daemon-ReloadFügen Sie nun den Systemd -Dienst hinzu VMware-Autostart.Service zum Systemstart, um automatisch zur Kartonzeit zu starten.
$ sudo systemctl aktivieren vmware-autostart.ServiceTesten des VMware Autostart -Programms
Um zu überprüfen, ob das Programm wie erwartet funktioniert, müssen Sie Ihren Computer neu starten. Stellen Sie vor diesem Fall sicher /opt/vmware-autostart/config.JSON Datei.
Ich werde das Ubuntu-Desktop-1 hinzufügen und PC 1 VMs in/opt/vmware-autostart/config arbeiten.JSON -Datei für die Demonstration.
Sobald Sie fertig sind, starten Sie Ihren Computer mit dem folgenden Befehl neu:
$ sudo NeustartSobald Ihr Computerstiefel startet, sollten Sie sehen, dass der SystemD -Dienst VMware-Autostart.Service Ist aktiv.
$ sudo systemctl status vmware-autostart.ServiceAus den Systemd -Protokollen können Sie sehen, dass die VMs Ubuntu-Desktop-1 Und Arbeit PC 1 automatisch gut begann in Ordnung.
Um zu bestätigen, dass die VMware Workstation Pro 16 VMs automatisch mit dem BOOT gestartet wurden, führen Sie den folgenden Befehl aus:
$ vmrun ListeWie Sie sehen können, werden die VMware Workstation Pro 16 VMs gut ausgeführt.
Sie können auch überprüfen, ob die VMs aus der VMware Workstation Pro 16 -App ausgeführt werden.
Um zu testen, ob die VMs beim Herunterfahren oder Neustart Ihres Computers suspendiert werden, öffnen Sie eines der VMs, die Sie für den Autostart konfigurierten.
Schließen Sie die VMware Workstation Pro 16 App, während die VM ausgeführt wird.
Klicke auf Im Hintergrund laufen wie im Screenshot unten markiert.
Starten Sie Ihren Computer nun mit dem folgenden Befehl neu:
$ sudo NeustartÖffnen Sie nach Ihren Computerstiefeln die VMware Workstation Pro 16 App und Sie sollten sehen, dass sich die VM im selben Zustand wie beim letzten Mal befindet (aus dem suspendierten Zustand wiederhergestellt).
Bekannte Probleme
Halten Sie eine virtuelle Maschine in der VMware Workstation Pro 16 App geöffnet. Der VMware Autostart Das Programm kann den virtuellen Computer beim Herunterfahren oder Neustart Ihres Computers nicht aussetzen, während Sie die VMware Workstation Pro 16 App geöffnet halten. Es kann selten sein, dass Menschen ihren Computer herunterfahren oder neu starten, während sie Programme offen halten. Das Programm könnte jedoch verbessert werden, um sicherzustellen, dass die VMware Workstation Pro 16 App geschlossen ist, bevor virtuelle Maschinen suspendiert werden.
Github -Repository
Das in diesem Artikel gezeigte VMware AutoStart -Programm ist auch auf GitHub verfügbar. Sie können das GitHub-Repository (Shovon8/VMware-Autostart) dieses Programms klonen, um sich etwas einzeln zu ersparen.
GitHub Link: https: // github.com/shovon8/vmware-autostart
Abschluss
Dieser Artikel zeigt Ihnen, wie Sie a schreiben können VMware Autostart Programm zum automatischen Starten von VMware Workstation Pro 16 virtuelle Maschinen auf dem BOOT und suspendieren Sie sie vor dem Herunterfahren oder Neustart des Systems.
Verweise
[1] VMware - Befehlszeilenanwendung
[2] Verwenden von VMRUN zur Steuerung virtueller Maschinen
[3] Zählen Sie JSON -Array -Elemente mit JQ - phpfog.com
[4] So entfernen Sie Zitate aus den Ergebnissen? · Ausgabe Nr. 1735 · Stedolan/JQ · Github