Ausführen von Skripts auf Ihrem virtuellen Linux-Computer mithilfe der Aktion Befehle ausführen
Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen
Das Feature „Skriptausführung“ verwendet den VM-Agent (virtual machine, virtueller Computer), um Shellskripts innerhalb eines virtuellen Azure-Computers unter Linux auszuführen. Diese Skripts können für die allgemeine Computer- oder Anwendungsverwaltung verwendet werden. Mit ihrer Hilfe können Sie Zugriffs- und Netzwerkprobleme eines virtuellen Computers schnell diagnostizieren und beheben und den virtuellen Computer wieder in einen funktionierenden Zustand versetzen.
Vorteile
Sie können auf verschiedene Weise auf Ihre virtuellen Computer zugreifen. Die Skriptausführung kann Skripts remote unter Verwendung des VM-Agents auf Ihren virtuellen Computern ausführen. Die Skriptausführung kann für virtuelle Linux-Computer über das Azure-Portal, die REST-API oder die Azure CLI verwendet werden.
Diese Funktion ist in allen Szenarien sinnvoll, in denen Sie ein Skript innerhalb eines virtuellen Computers ausführen möchten. Dies ist eine der wenigen Möglichkeiten zur Fehlersuche und Korrigierung eines virtuellen Computers, bei der der RDP- oder SSH-Port aufgrund einer Netzwerk- oder Administratorbenutzerkonfiguration nicht geöffnet ist.
Voraussetzungen
Unterstützte Linux-Distributionen
Linux-Distribution | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x und höher | 9.x und höher |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Nicht unterstützt |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Nicht unterstützt |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x und höher | 9.x und höher |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
Beschränkungen
Die Verwendung der Skriptausführung unterliegt den folgenden Einschränkungen:
- Die Ausgabe ist auf die letzten 4.096 Bytes beschränkt.
- Der Mindestzeitraum für die Ausführung eines Skripts liegt bei etwa 20 Sekunden.
- Skripts werden unter Linux standardmäßig mit erhöhten Benutzerberechtigungen ausgeführt.
- Es können nicht mehrere Skripts gleichzeitig ausgeführt werden.
- Skripts, die Informationen anfordern (interaktiver Modus), werden nicht unterstützt.
- Die Ausführung von Skripts kann nicht abgebrochen werden.
- Die maximal zulässige Ausführungsdauer eines Skripts beträgt 90 Minuten. Danach tritt ein Timeout auf.
- Um die Ergebnisse des Skripts zurückzugeben, ist eine ausgehende Konnektivität des virtuellen Computers erforderlich.
Hinweis
Damit die Skriptausführung richtig funktioniert, ist Konnektivität (Port 443) mit öffentlichen Azure-IP-Adressen erforderlich. Wenn die Erweiterung keinen Zugriff auf diese Endpunkte hat, werden die Skripts zwar möglicherweise erfolgreich ausgeführt, geben aber keine Ergebnisse zurück. Wenn Sie Datenverkehr auf dem virtuellen Computer blockieren, können Sie Diensttags verwenden, um Datenverkehr mit öffentlichen Azure-IP-Adressen über das Tag AzureCloud
zuzulassen.
Verfügbare Befehle
Diese Tabelle enthält die Liste der für virtuelle Linux-Computer verfügbaren Befehle. Mit dem Befehl RunShellScript können Sie jedes beliebige benutzerdefinierte Skript ausführen. Wenn Sie einen Befehl mithilfe der Azure-Befehlszeilenschnittstelle oder über PowerShell ausführen, muss für den Parameter --command-id
oder -CommandId
einer der Werte aus der folgenden Liste angegeben werden. Wenn Sie einen Wert angeben, bei dem es sich nicht um einen verfügbaren Befehl handelt, tritt der folgende Fehler auf:
The entity was not found in this Azure location
Name | Beschreibung |
---|---|
RunShellScript | Führt ein Linux-Shellskript aus. |
ifconfig | Ruft die Konfiguration aller Netzwerkschnittstellen ab. |
Azure CLI
Im folgenden Beispiel wird der Befehl az vm run-command verwendet, um ein Shellskript auf einem virtuellen Azure-Computer unter Linux auszuführen.
az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"
Hinweis
Wenn Sie Befehle als anderer Benutzer ausführen möchten, geben Sie sudo -u
ein, um ein Benutzerkonto anzugeben.
Azure-Portal
Navigieren Sie im Azure-Portal zu einem virtuellen Computer, und wählen Sie im linken Menü unter Vorgänge die Option Befehl ausführen aus. Daraufhin wird eine Liste mit den verfügbaren Befehlen angezeigt, die auf dem virtuellen Computer ausgeführt werden können.
Wählen Sie einen auszuführenden Befehl aus. Einige der Befehle verfügen möglicherweise über optionale oder erforderliche Eingabeparameter. Bei diesen Befehlen werden die Parameter in Form von Textfeldern für die Eingabewerte angezeigt. Für jeden Befehl können Sie das ausgeführte Skript anzeigen, indem Sie Skript anzeigen erweitern. Der Befehl RunShellScript unterscheidet sich von den anderen Befehlen, da er die Angabe eines eigenen, benutzerdefinierten Skripts ermöglicht.
Hinweis
Die integrierten Befehle können nicht bearbeitet werden.
Nachdem Sie den Befehl ausgewählt haben, wählen Sie Ausführen aus, um das Skript auszuführen. Nach Abschluss des Skripts gibt es die Ausgabe und eventuelle Fehler im Ausgabefenster zurück. Der folgende Screenshot zeigt eine Beispielausgabe für die Ausführung des ifconfig-Befehls.
PowerShell
Im folgenden Beispiel wird das Cmdlet Invoke-AzVMRunCommand zum Ausführen eines PowerShell-Skripts auf einem virtuellen Azure-Computer verwendet. Für das Cmdlet gilt, dass das im Parameter -ScriptPath
referenzierte Skript am Ausführungsort des Cmdlets lokal sein muss.
Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
Einschränken des Zugriffs auf „Befehl ausführen“
Zum Auflisten der ausführbaren Befehle oder Anzeigen der Details zu einem Befehl ist die Berechtigung Microsoft.Compute/locations/runCommands/read
auf Abonnementebene erforderlich. Die integrierte Rolle Leser und höhere Rollen verfügen über diese Berechtigung.
Zum Ausführen eines Befehls ist die Berechtigung Microsoft.Compute/virtualMachines/runCommands/write
erforderlich. Die Rolle Mitwirkender für virtuelle Computer und höhere Rollen verfügen über diese Berechtigung.
Für die Skriptausführung können Sie eine der integrierten Rollen verwenden oder eine benutzerdefinierte Rolle erstellen.
Problembehandlung für aktionsbezogene Ausführungsbefehle unter Linux
Bei der Problembehandlung für aktionsbezogene Ausführungsbefehle in Linux-Umgebungen können Sie die Protokolldatei handler heranziehen, um ausführlichere Informationen zu erhalten. Diese befindet sich in der Regel im folgenden Verzeichnis: /var/log/azure/run-command-handler/handler.log
.
Bekannte Probleme
Die Protokolle aktionsbezogener Ausführungsbefehle unter Linux unterscheiden sich in einigen Punkten merklich von den Windows-Protokollen für aktionsbezogene Ausführungsbefehle:
- Die Sequenznummer wird bei jeder Zeile des Protokolls als „seq=#“ gemeldet.
- Es gibt keine Zeile mit
Awaiting completion...
, da dies nur bei aktionsbezogenen Ausführungsbefehlen unter Windows vorhanden ist. - Die Zeile
Command existed with code: #
ist ebenfalls nur in Windows-Protokollen für aktionsbezogene Ausführungsbefehle vorhanden.
Entfernen aktionsbezogener Ausführungsbefehle
Wenn Sie Ihre Linux-Erweiterung für aktionsbezogene Ausführungsbefehle entfernen müssen, können Sie die folgenden Schritte für Azure PowerShell und für die CLI verwenden:
Ersetzen Sie rgname und vmname in den folgenden Entfernungsbeispielen jeweils durch Ihren relevanten Ressourcengruppennamen bzw. VM-Namen:
Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname
Hinweis
Wenn Sie einen Ausführungsbefehl erneut anwenden, wird die Erweiterung automatisch installiert. Sie können den Befehl zum Entfernen der Erweiterung verwenden, um Probleme im Zusammenhang mit der Erweiterung zu beheben.
Nächste Schritte
Informationen zu weiteren Möglichkeiten für die Remoteausführung von Skripts und Befehlen auf Ihrem virtuellen Computer finden Sie unter Ausführen von Skripts in Ihrer Linux-VM.