Sdílet prostřednictvím


Spouštění skriptů na virtuálním počítači s Linuxem pomocí akcí Spustit příkazy

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Funkce Spustit příkaz používá agenta virtuálního počítače ke spouštění skriptů prostředí na virtuálním počítači Azure s Linuxem. Tyto skripty můžete použít pro obecnou správu počítačů nebo aplikací. Můžou vám pomoct rychle diagnostikovat a opravovat problémy s přístupem k virtuálním počítačům a sítí a získat virtuální počítač zpět do dobrého stavu.

Výhody

K virtuálním počítačům můžete přistupovat několika způsoby. Spuštěním příkazu můžete na virtuálních počítačích vzdáleně spouštět skripty pomocí agenta virtuálního počítače. Příkaz Spustit použijete prostřednictvím webu Azure Portal, rozhraní REST API nebo Azure CLI pro virtuální počítače s Linuxem.

Tato funkce je užitečná ve všech scénářích, ve kterých chcete spustit skript v rámci virtuálního počítače. Je to jeden z jediných způsobů řešení potíží a nápravy virtuálního počítače, který nemá otevřený port RDP nebo SSH kvůli konfiguraci sítě nebo správce uživatele.

Požadavky

Podporovaná distribuce Linuxu

Vydavatel Distribuce x64 ARM64
Komunita Alma Linuxu Alma Linux 8.x+, 9.x+ 8.x+, 9.x+
Credativ Debian více než 10 11.x+
Kinvolk Flatcar Linux 3374.2.x+ 3374.2.x+
Microsoft Azure Linux 2.x 2.x
openSUSE Project openSUSE 12.3+ Nepodporováno
Oracle Oracle Linux 6.4+, 7.x+, 8.x+ Nepodporováno
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+
Canonical Ubuntu (verze LTS) 18.04+, 20.04+, 22.04+, 24.04+ 20.04+, 22.04+, 24.04+

Restrictions

Pokud používáte příkaz Spustit, platí následující omezení:

  • Výstup je omezen na posledních 4 096 bajtů.
  • Minimální doba spuštění skriptu je přibližně 20 sekund.
  • Skripty se ve výchozím nastavení spouští jako uživatel se zvýšenými oprávněními v Linuxu.
  • Můžete spustit jeden skript najednou.
  • Skripty s výzvou k zadání informací (interaktivní režim) se nepodporují.
  • Spuštěný skript nelze zrušit.
  • Maximální doba, po které může skript běžet, je 90 minut. Potom vyprší časový limit skriptu.
  • K vrácení výsledků skriptu se vyžaduje odchozí připojení z virtuálního počítače.

Poznámka:

Ke správnému fungování vyžaduje spuštění příkazu připojení (port 443) k veřejným IP adresům Azure. Pokud rozšíření nemá přístup k těmto koncovým bodům, skripty se můžou úspěšně spustit, ale nevrací výsledky. Pokud blokujete provoz na virtuálním počítači, můžete pomocí značek služeb povolit provoz do veřejných IP adres Azure pomocí značky AzureCloud .

Dostupné příkazy

Tato tabulka obsahuje seznam příkazů dostupných pro virtuální počítače s Linuxem. Ke spuštění libovolného vlastního skriptu můžete použít příkaz RunShellScript . Pokud ke spuštění příkazu používáte Azure CLI nebo PowerShell, hodnota, kterou zadáte pro --command-id daný parametr -CommandId , musí být jedna z následujících uvedených hodnot. Když zadáte hodnotu, která není dostupným příkazem, zobrazí se tato chyba:

The entity was not found in this Azure location
název Description Další informace
RunShellScript Spustí skript linuxového prostředí.
ifconfig Získá konfiguraci všech síťových rozhraní. readme

Azure CLI (příkazový řádek nástroje Azure)

Následující příklad používá příkaz az vm run-command ke spuštění skriptu prostředí na virtuálním počítači Azure s Linuxem.

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

Poznámka:

Pokud chcete spouštět příkazy jako jiný uživatel, zadejte sudo -u uživatelský účet.

Azure Portal

Přejděte na virtuální počítač na webu Azure Portal a v nabídce vlevo v části Operace vyberte Příkaz Spustit. Zobrazí se seznam dostupných příkazů pro spuštění na virtuálním počítači.

Seznam příkazů

Zvolte příkaz, který chcete spustit. Některé příkazy můžou mít volitelné nebo povinné vstupní parametry. Pro tyto příkazy se parametry zobrazí jako textová pole, abyste mohli zadat vstupní hodnoty. Pro každý příkaz můžete zobrazit skript, který se spouští, rozbalením zobrazení skriptu. RunShellScript se liší od ostatních příkazů, protože umožňuje zadat vlastní skript.

Poznámka:

Předdefinované příkazy nelze upravovat.

Po výběru příkazu vyberte Spustit a spusťte skript. Po dokončení skriptu vrátí výstup a případné chyby v okně výstupu. Následující snímek obrazovky ukazuje příklad výstupu spuštění příkazu ifconfig .

Spuštění výstupu skriptu příkazu

PowerShell

Následující příklad používá rutinu Invoke-AzVMRunCommand ke spuštění skriptu PowerShellu na virtuálním počítači Azure. Rutina očekává, že skript odkazovaný v parametru -ScriptPath bude místní pro umístění, kde se rutina spouští.

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

Omezení přístupu ke spuštění příkazu

Výpis příkazů spuštění nebo zobrazení podrobností příkazu vyžaduje Microsoft.Compute/locations/runCommands/read oprávnění na úrovni předplatného. Tato oprávnění mají předdefinovaná role Čtenář a vyšší úrovně.

Spuštění příkazu vyžaduje Microsoft.Compute/virtualMachines/runCommands/write oprávnění. Role Přispěvatel virtuálních počítačů a vyšší úrovně mají toto oprávnění.

Můžete použít některou z předdefinovaných rolí nebo vytvořit vlastní roli pro použití příkazu Spustit.

Řešení potíží s příkazem Pro spuštění akce v Linuxu

Při řešení potíží s příkazem spuštění akce pro linuxová prostředí se podívejte na soubor protokolu obslužné rutiny , který se obvykle nachází v následujícím adresáři: /var/log/azure/run-command/handler.log další podrobnosti.

Známé problémy

Protokoly příkazů pro spuštění akcí v Linuxu mají v porovnání s protokoly windows příkazu pro spuštění akce několik zajímavých rozdílů:

  • Pořadové číslo je hlášeno s každým řádkem protokolu jako seq=#.
  • Nebude k dispozici řádek, který bude obsahovat Awaiting completion... , protože to bude pouze v příkazu pro spuštění akce windows.
  • Řádek Command existed with code: # je také k dispozici pouze v protokolování příkazu pro spuštění akce systému Windows.

Odebrání příkazu spustit akci

Pokud potřebujete odebrat rozšíření linuxového příkazu pro spuštění akce, projděte si následující kroky pro Azure PowerShell a rozhraní příkazového řádku:

V následujících příkladech odebrání nahraďte název skupinyprostředků a název příslušné skupiny prostředků a název virtuálního počítače.

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

Poznámka:

Když znovu použijete příkaz Spustit, rozšíření se nainstaluje automaticky. K řešení jakýchkoli problémů souvisejících s rozšířením můžete použít příkaz pro odebrání rozšíření.

Další kroky

Další informace o dalších způsobech vzdáleného spouštění skriptů a příkazů na virtuálním počítači najdete v tématu Spouštění skriptů na virtuálním počítači s Linuxem.