Executar scripts na VM Linux com os Comandos Executar de ação
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
A funcionalidade Executar Comando utiliza a máquina virtual (VM) para executar scripts de shell numa VM Linux do Azure. Pode utilizar estes scripts para a gestão geral de computadores ou aplicações. Eles podem ajudá-lo a diagnosticar e corrigir rapidamente o acesso à VM e problemas de rede e fazer com que a VM volte a um bom estado.
Benefícios
Você pode acessar suas máquinas virtuais de várias maneiras. Executar comando pode executar scripts em suas máquinas virtuais remotamente usando o agente de VM. Você usa Executar Comando por meio do portal do Azure, API REST ou CLI do Azure para VMs Linux.
Esse recurso é útil em todos os cenários em que você deseja executar um script em uma máquina virtual. É uma das únicas maneiras de solucionar problemas e corrigir uma máquina virtual que não tem a porta RDP ou SSH aberta devido à configuração de rede ou usuário administrativo.
Pré-requisitos
Linux Distro's suportado
Linux Distro | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | Mais de 10 | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Não suportado |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Não suportado |
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+ |
Restrições
Aplicam-se as seguintes restrições quando utiliza o Comando Executar:
- A saída está limitada aos últimos 4096 bytes.
- O tempo mínimo para executar um script é cerca de 20 segundos.
- Os scripts são executados por padrão como um usuário elevado no Linux.
- Você pode executar um script de cada vez.
- Não há suporte para scripts que solicitam informações (modo interativo).
- Não pode cancelar um script em execução.
- O tempo máximo que um script pode ser executado é de 90 minutos. Depois disso, o script expirará.
- A conectividade de saída da VM é necessária para devolver os resultados do script.
Nota
Para funcionar corretamente, o Run Command requer conectividade (porta 443) com endereços IP públicos do Azure. Se a extensão não tiver acesso a esses pontos de extremidade, os scripts poderão ser executados com êxito, mas não retornarão os resultados. Se estiver a bloquear o tráfego na máquina virtual, pode utilizar etiquetas de serviço para permitir o tráfego para endereços IP públicos do Azure utilizando a AzureCloud
etiqueta.
Comandos disponíveis
Esta tabela mostra a lista de comandos disponíveis para VMs Linux. Você pode usar o comando RunShellScript para executar qualquer script personalizado desejado. Quando você estiver usando a CLI do Azure ou o PowerShell para executar um comando, o valor fornecido para o --command-id
parâmetro or -CommandId
deve ser um dos seguintes valores listados. Quando você especifica um valor que não é um comando disponível, você recebe este erro:
The entity was not found in this Azure location
Name | Descrição |
---|---|
RunShellScript | Executa um shell script Linux. |
ifconfig | Obtém a configuração de todas as interfaces de rede. |
CLI do Azure
O exemplo a seguir usa o comando az vm run-command para executar um shell script em uma VM Linux do Azure.
az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"
Nota
Para executar comandos como um usuário diferente, digite sudo -u
para especificar uma conta de usuário.
Portal do Azure
Vá para uma VM no portal do Azure e selecione Executar comando no menu à esquerda, em Operações. Você verá uma lista dos comandos disponíveis para serem executados na VM.
Escolha um comando para executar. Alguns dos comandos podem ter parâmetros de entrada opcionais ou necessários. Para esses comandos, os parâmetros são apresentados como campos de texto para você fornecer os valores de entrada. Para cada comando, você pode exibir o script que está sendo executado expandindo View script. RunShellScript é diferente dos outros comandos, porque permite que você forneça seu próprio script personalizado.
Nota
Os comandos internos não são editáveis.
Depois de escolher o comando, selecione Executar para executar o script. Depois que o script termina, ele retorna a saída e quaisquer erros na janela de saída. A captura de tela a seguir mostra um exemplo de saída da execução do comando ifconfig .
PowerShell
O exemplo a seguir usa o cmdlet Invoke-AzVMRunCommand para executar um script do PowerShell em uma VM do Azure. O cmdlet espera que o script referenciado -ScriptPath
no parâmetro seja local para onde o cmdlet está sendo executado.
Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
Limitar o acesso ao Comando Executar
Listar os comandos de execução ou mostrar os detalhes de um comando requer a Microsoft.Compute/locations/runCommands/read
permissão no nível de Assinatura. A função de leitor interna e os níveis superiores têm essa permissão.
A execução de um comando requer a Microsoft.Compute/virtualMachines/runCommands/write
permissão. A função de Colaborador de Máquina Virtual e os níveis superiores têm essa permissão.
Você pode usar uma das funções internas ou criar uma função personalizada para usar o Comando Executar.
Solução de problemas do Action Run Command Linux
Ao solucionar o comando run action para ambientes Linux, consulte o arquivo de log do manipulador normalmente localizado no seguinte diretório: /var/log/azure/run-command-handler/handler.log
para obter mais detalhes.
Problemas conhecidos
Os logs de comando de execução de ação do Linux têm algumas diferenças notáveis em comparação com os logs do comando de execução de ação do Windows:
- O número de sequência é reportado com cada linha do log como 'seq=#'
- Não haverá uma linha que contenha
Awaiting completion...
, pois isso estará em ação executar o comando Windows apenas. - A linha
Command existed with code: #
também só está presente no comando de execução de ação de log do Windows.
Ação Executar Remoção de Comando
Se precisar remover a extensão Linux do comando action run, consulte as etapas abaixo para o Azure PowerShell e a CLI:
Substitua rgname e vmname pelo nome do grupo de recursos relevante e pelo nome da máquina virtual nos exemplos de remoção a seguir.
Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname
Nota
Quando você aplica um Run Command novamente, a extensão será instalada automaticamente. Você pode usar o comando extension removal para solucionar quaisquer problemas relacionados à extensão.
Próximos passos
Para saber mais sobre outras maneiras de executar scripts e comandos remotamente em sua VM, consulte Executar scripts em sua VM Linux.