Sdílet prostřednictvím


Spouštění skriptů ve virtuálním počítači s Linuxem pomocí akčních funkcí Spustit příkaz

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

Funkce Spustit příkaz využívá agenta virtuálního počítače ke spouštění skriptů prostředí v rámci virtuálního počítače Azure s Linuxem. Tyto skripty můžete použít k obecné správě 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.

Zaměstnanecké 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

Distribuce Linuxu 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+ Nepodporuje se
Oracle Linux 6.4+, 7.x+, 8.x+ Nepodporuje se
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+

Omezení

Při používání funkce Spustit příkaz platí následující omezení:

  • Výstup je omezený na posledních 4 096 bajtů.
  • Minimální doba potřebná ke 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 není možné zrušit.
  • Maximální doba spuštění skriptu je 90 minut. Potom vyprší časový limit skriptu.
  • Pro 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 Popis
RunShellScript Spustí skript linuxového prostředí.
ifconfig Získá konfiguraci všech síťových rozhraní.

Azure CLI

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.

portál Azure

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 k funkci Spustit příkaz

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/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 skupiny prostř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.