Ausführen von Skripts auf Ihrem virtuellen Linux-Computer mithilfe der Aktion Befehle ausführen

Achtung

Dieser Artikel bezieht sich auf CentOS, eine Linux-Distribution, die sich dem End-of-Life-Status (EOL) nähert. Sie sollten Ihre Nutzung entsprechend planen. Weitere Informationen finden Sie im CentOS-Leitfaden für das Lebensende.

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
CentOS 7.x+, 8.x+ 7.x+
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.

Befehlsliste

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.

Skriptausgabe von „Befehl ausführen“

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.