Köra skript på den virtuella Linux-datorn med hjälp av åtgärdsinriktade Kör kommando

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

Funktionen Run Command använder agenten för virtuella datorer (VM) till att köra gränssnittsskript i en virtuell Azure Linux-dator. Du kan använda de här skripten till allmän hantering av datorer eller program. De kan hjälpa dig att snabbt diagnostisera och åtgärda problem med åtkomst till virtuella datorer och nätverk och få tillbaka den virtuella datorn till ett bra tillstånd.

Förmåner

Du kan komma åt dina virtuella datorer på flera sätt. Kör kommandot kan fjärrköra skript på dina virtuella datorer med hjälp av VM-agenten. Du använder Kör kommando via Azure-portalen, REST API eller Azure CLI för virtuella Linux-datorer.

Den här funktionen är användbar i alla scenarier där du vill köra ett skript på en virtuell dator. Det är ett av de enda sätten att felsöka och åtgärda en virtuell dator som inte har RDP- eller SSH-porten öppen på grund av nätverks- eller administratörskonfiguration.

Förutsättningar

Linux Distro stöds

Linux-distribution x64 ARM64
Alma Linux 9.x+ 9.x+
Debian 10+ 11.x+
Flatcar Linux 3374.2.x+ 3374.2.x+
Azure Linux 2.x 2.x
openSUSE 12.3+ Stöds inte
Oracle Linux 6.4+, 7.x+, 8.x+ Stöds inte
Red Hat Enterprise Linux 6.7+, 7.x+, 8.x+ 8.6+, 9.0+
Rocky Linux 9.x+ 9.x+
SLES 12.x+, 15.x+ 15.x SP4+
Ubuntu 18.04+, 20.04+, 22.04+ 20.04+, 22.04+

Begränsningar

Följande begränsningar gäller när du använder Kör kommando:

  • Utdata är begränsade till de senaste 4 096 bytena.
  • Den minsta tiden för att köra ett skript är cirka 20 sekunder.
  • Skript körs som standard som en upphöjd användare i Linux.
  • Du kan köra ett skript i taget.
  • Skript som frågar efter information (interaktivt läge) stöds inte.
  • Du kan inte avbryta ett skript som körs.
  • Den maximala tiden som ett skript kan köras är 90 minuter. Därefter överskrider skriptet tidsgränsen.
  • Utgående anslutning från den virtuella datorn krävs för att returnera resultatet av skriptet.

Kommentar

Kör kommandot kräver anslutning (port 443) till offentliga IP-adresser i Azure för att fungera korrekt. Om tillägget inte har åtkomst till dessa slutpunkter kan skripten köras korrekt men inte returnera resultaten. Om du blockerar trafik på den virtuella datorn kan du använda tjänsttaggar för att tillåta trafik till offentliga IP-adresser i Azure med hjälp av taggen AzureCloud .

Tillgängliga kommandon

Den här tabellen visar listan över kommandon som är tillgängliga för virtuella Linux-datorer. Du kan använda RunShellScript-kommandot för att köra alla anpassade skript som du vill. När du använder Azure CLI eller PowerShell för att köra ett kommando måste värdet som du anger för parametern --command-id eller -CommandId vara något av följande angivna värden. När du anger ett värde som inte är ett tillgängligt kommando får du följande fel:

The entity was not found in this Azure location
Namn Beskrivning
RunShellScript Kör ett Linux-gränssnittsskript.
ifconfig Hämtar konfigurationen av alla nätverksgränssnitt.

Azure CLI

I följande exempel används kommandot az vm run-command för att köra ett gränssnittsskript på en virtuell Azure Linux-dator.

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

Kommentar

Om du vill köra kommandon som en annan användare anger du sudo -u för att ange ett användarkonto.

Azure Portal

Gå till en virtuell dator i Azure-portalen och välj Kör kommando på den vänstra menyn under Åtgärder. Du ser en lista över de tillgängliga kommandon som ska köras på den virtuella datorn.

Lista över kommandon

Välj ett kommando som ska köras. Vissa av kommandona kan ha valfria eller obligatoriska indataparametrar. För dessa kommandon visas parametrarna som textfält där du kan ange indatavärdena. För varje kommando kan du visa skriptet som körs genom att expandera Visa skript. RunShellScript skiljer sig från de andra kommandona eftersom du kan ange ett eget anpassat skript.

Kommentar

De inbyggda kommandona kan inte redigeras.

När du har valt kommandot väljer du Kör för att köra skriptet. När skriptet har slutförts returneras utdata och eventuella fel i utdatafönstret. Följande skärmbild visar ett exempel på utdata från körningen av kommandot ifconfig .

Kör kommandoskriptutdata

PowerShell

I följande exempel används cmdleten Invoke-AzVMRunCommand för att köra ett PowerShell-skript på en virtuell Azure-dator. Cmdleten förväntar sig att skriptet som refereras i parametern -ScriptPath är lokalt där cmdleten körs.

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

Begränsa åtkomst till Run Command

För att visa körningskommandona eller visa information om ett kommando krävs behörigheten Microsoft.Compute/locations/runCommands/read på prenumerationsnivå. Den inbyggda rollen Läsare och högre nivåer har den här behörigheten.

Om du kör ett kommando krävs behörigheten Microsoft.Compute/virtualMachines/runCommands/write . Rollen Virtuell datordeltagare och högre nivåer har den här behörigheten.

Du kan använda någon av de inbyggda rollerna eller skapa en anpassad roll för att använda Kör kommando.

Felsökning av Åtgärdskörningskommando i Linux

När du felsöker åtgärdskörningskommandot för Linux-miljöer kan du läsa hanterarens loggfil som vanligtvis finns i följande katalog: /var/log/azure/run-command-handler/handler.log för mer information.

Kända problem

Kommandologgarna för Körning av Linux-åtgärder har några anmärkningsvärda skillnader jämfört med Windows-loggarna för åtgärdskörningskommandot:

  • Sekvensnumret rapporteras med varje rad i loggen som "seq=#"
  • Det kommer inte att finnas en rad som innehåller Awaiting completion... eftersom detta kommer att vara i åtgärdskörningskommandot Endast Windows.
  • Raden Command existed with code: # finns också bara i körningskommandot Windows-loggning.

Borttagning av åtgärdskörningskommando

Om du behöver ta bort åtgärdskörningskommandots Linux-tillägg läser du stegen nedan för Azure PowerShell och CLI:

Ersätt rgname och vmname med ditt relevanta resursgruppsnamn och namn på den virtuella datorn i följande borttagningsexempel.

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

Kommentar

När du använder ett Kör-kommando igen installeras tillägget automatiskt. Du kan använda kommandot för borttagning av tillägg för att felsöka eventuella problem som rör tillägget.

Nästa steg

Mer information om andra sätt att fjärrköra skript och kommandon på den virtuella datorn finns i Köra skript på den virtuella Linux-datorn.