Delen via


Scripts uitvoeren op uw Linux-VM met behulp van actie-opdrachten uitvoeren

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

De functie Opdracht uitvoeren maakt gebruik van de VM-agent (virtuele machine) om shellscripts uit te voeren binnen een Virtuele Linux-machine in Azure. U kunt deze scripts gebruiken voor algemeen machine- of toepassingsbeheer. Ze kunnen u helpen om snel problemen met vm-toegang en netwerkproblemen vast te stellen en op te lossen en de VIRTUELE machine weer in een goede staat te krijgen.

Voordelen

U hebt op meerdere manieren toegang tot uw virtuele machines. Voer opdracht uit om scripts op uw virtuele machines op afstand uit te voeren met behulp van de VM-agent. U gebruikt De opdracht Uitvoeren via Azure Portal, REST API of Azure CLI voor Linux-VM's.

Deze mogelijkheid is handig in alle scenario's waarin u een script wilt uitvoeren binnen een virtuele machine. Het is een van de enige manieren om problemen op te lossen met een virtuele machine waarop de RDP- of SSH-poort niet is geopend vanwege de configuratie van netwerk- of beheerdersgebruikers.

Vereiste voorwaarden

Ondersteunde Linux-distributies

Publisher Distributie x64 ARM64
Alma Linux Community Alma Linux 8.x+, 9.x+ 8.x+, 9.x+
Credativ Debian 10+ 11.x+
Kinvolk Flatcar Linux 3374.2.x+ 3374.2.x+
Microsoft Azure Linux 2.x 2.x
openSUSE-project openSUSE 12.3+ niet ondersteund
Oracle Oracle Linux 6.4+, 7.x+, 8.x+ niet ondersteund
Red Hat Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ 8.6+, 9.0+, 10.x+
CIQ Rocky Linux 9.x+ 9.x+
SUSE SLES 12.x+, 15.x+ 15.x SP4+
Canoniek Ubuntu (LTS-releases) 18.04+, 20.04+, 22.04+, 24.04+ 20.04+, 22.04+, 24.04+

Beperkingen

De volgende beperkingen gelden wanneer u de opdracht Uitvoeren gebruikt:

  • De uitvoer is beperkt tot de laatste 4096 bytes.
  • De minimale tijd voor het uitvoeren van een script is ongeveer 20 seconden.
  • Scripts worden standaard uitgevoerd als een gebruiker met verhoogde bevoegdheid in Linux.
  • U kunt één script tegelijk uitvoeren.
  • Scripts die om informatie vragen (interactieve modus) worden niet ondersteund.
  • U kunt een actief script niet annuleren.
  • De maximale tijd dat een script kan worden uitgevoerd, is 90 minuten. Daarna treedt er een time-out op voor het script.
  • Uitgaande connectiviteit van de VIRTUELE machine is vereist om de resultaten van het script te retourneren.

Opmerking

Om correct te kunnen functioneren, vereist De opdracht Uitvoeren vereist connectiviteit (poort 443) naar openbare IP-adressen van Azure. Als de extensie geen toegang heeft tot deze eindpunten, worden de scripts mogelijk uitgevoerd, maar worden de resultaten niet geretourneerd. Als u verkeer op de virtuele machine blokkeert, kunt u servicetags gebruiken om verkeer naar openbare IP-adressen van Azure toe te staan met behulp van de AzureCloud tag.

Beschikbare opdrachten

In deze tabel ziet u de lijst met opdrachten die beschikbaar zijn voor virtuele Linux-machines. U kunt de opdracht RunShellScript gebruiken om een aangepast script uit te voeren dat u wilt. Wanneer u de Azure CLI of PowerShell gebruikt om een opdracht uit te voeren, moet de waarde die u opgeeft voor de --command-id of -CommandId parameter een van de volgende vermelde waarden zijn. Wanneer u een waarde opgeeft die geen beschikbare opdracht is, wordt deze fout weergegeven:

The entity was not found in this Azure location
Naam Beschrijving Meer informatie
RunShellScript Voert een Linux-shellscript uit.
ifconfig Hiermee haalt u de configuratie van alle netwerkinterfaces op. readme

Azure-opdrachtregelinterface (CLI)

In het volgende voorbeeld wordt de opdracht az vm run-command gebruikt om een shellscript uit te voeren op een Virtuele Linux-machine in Azure.

az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"

Opmerking

Als u opdrachten wilt uitvoeren als een andere gebruiker, voert u in om een gebruikersaccount op te geven sudo -u .

Azure Portal

Ga naar een VIRTUELE machine in Azure Portal en selecteer De opdracht Uitvoeren in het linkermenu onder Bewerkingen. U ziet een lijst met de beschikbare opdrachten die op de VIRTUELE machine moeten worden uitgevoerd.

Lijst met opdrachten

Kies een opdracht die u wilt uitvoeren. Sommige opdrachten hebben mogelijk optionele of vereiste invoerparameters. Voor deze opdrachten worden de parameters weergegeven als tekstvelden om de invoerwaarden op te geven. Voor elke opdracht kunt u het script weergeven dat wordt uitgevoerd door het weergavescript uit te vouwen. RunShellScript verschilt van de andere opdrachten, omdat u hiermee uw eigen aangepaste script kunt opgeven.

Opmerking

De ingebouwde opdrachten kunnen niet worden bewerkt.

Nadat u de opdracht hebt gekozen, selecteert u Uitvoeren om het script uit te voeren. Nadat het script is voltooid, worden de uitvoer en eventuele fouten in het uitvoervenster geretourneerd. In de volgende schermopname ziet u een voorbeeld van de uitvoer van het uitvoeren van de ifconfig-opdracht .

Uitvoer van opdrachtscript uitvoeren

PowerShell

In het volgende voorbeeld wordt de cmdlet Invoke-AzVMRunCommand gebruikt om een PowerShell-script uit te voeren op een Azure-VM. De cmdlet verwacht dat het script waarnaar wordt verwezen in de -ScriptPath parameter lokaal is voor de locatie waarop de cmdlet wordt uitgevoerd.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

De toegang tot de opdracht Uitvoeren beperken

Voor het weergeven van de uitvoeringsopdrachten of het weergeven van de details van een opdracht is de Microsoft.Compute/locations/runCommands/read machtiging op abonnementsniveau vereist. De ingebouwde lezerrol en hogere niveaus hebben deze machtiging.

Voor het uitvoeren van een opdracht is de Microsoft.Compute/virtualMachines/runCommands/write machtiging vereist. De rol Inzender voor virtuele machines en hogere niveaus hebben deze machtiging.

U kunt een van de ingebouwde rollen gebruiken of een aangepaste rol maken om de opdracht Uitvoeren te gebruiken.

Problemen met opdracht Uitvoeren in Linux oplossen

Raadpleeg het handlerlogboekbestand dat zich doorgaans in de volgende map bevindt bij het oplossen van de actieuitvoeringsopdracht voor Linux-omgevingen: /var/log/azure/run-command/handler.log voor meer informatie.

Bekende problemen

De opdrachtlogboeken voor de Linux-actieuitvoering hebben enkele belangrijke verschillen ten opzichte van de Windows-logboeken voor het uitvoeren van acties:

  • Het volgnummer wordt gerapporteerd met elke regel van het logboek als 'seq=#'
  • Er is geen regel die deze bevat Awaiting completion... , omdat deze alleen in de opdracht Windows wordt uitgevoerd.
  • De regel Command existed with code: # is ook alleen aanwezig in de windows-logboekregistratie van de opdracht uitvoeren.

Opdracht Actie uitvoeren verwijderen

Raadpleeg de onderstaande stappen voor Azure PowerShell en CLI als u de Linux-extensie voor het uitvoeren van de actie wilt verwijderen:

Vervang rgname en vmname door de relevante resourcegroepnaam en de naam van de virtuele machine in de volgende verwijderingsvoorbeelden.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke  --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname

Opmerking

Wanneer u een opdracht uitvoeren opnieuw toepast, wordt de extensie automatisch geïnstalleerd. U kunt de opdracht voor het verwijderen van extensies gebruiken om eventuele problemen met betrekking tot de extensie op te lossen.

Volgende stappen

Zie Scripts uitvoeren op uw Linux-VM voor meer informatie over andere manieren om scripts en opdrachten op afstand uit te voeren op uw VIRTUELE machine.