Partilhar via


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.

Lista de comandos

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 .

Executar saída de script de comando

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.