> For the complete documentation index, see [llms.txt](https://wiki.datadike.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.datadike.com/product-guide/configuracoes/sonar/rmm/comandos-remotos/scripts-personalizados.md).

# Scripts Personalizados

O Sonar RMM oferece um sistema robusto de automação através de scripts personalizados, permitindo que administradores de TI executem tarefas complexas de forma automatizada e consistente em toda sua infraestrutura.

{% hint style="success" %}

#### Benefícios dos Scripts no Sonar

* **Automação de tarefas repetitivas**: Reduza tempo e esforço manual
* **Consistência**: Execute tarefas idênticas em múltiplos dispositivos
* **Escalabilidade**: Gerencie centenas ou milhares de dispositivos simultaneamente
* **Flexibilidade**: Suporte a múltiplas linguagens de script
  {% endhint %}

## Tipos de Scripts no Sonar

* **Manutenção do sistema**: Limpeza de arquivos temporários, desfragmentação
* **Monitoramento**: Verificação de saúde do sistema, coleta de métricas
* **Configuração**: Ajustes de registro, configurações de rede
* **Instalação de aplicativos**: Deploy automatizado de software
* **Configuração pós-instalação**: Definição de preferências e políticas
* **Backup e restore**: Operações de proteção de dados

## Estrutura e Anatomia de Scripts

```powershell
# 1. Cabeçalho e documentação
<#
.SYNOPSIS
    Breve descrição do que o script faz
.DESCRIPTION
    Descrição detalhada incluindo parâmetros e comportamento esperado
.PARAMETER ParameterName
    Descrição dos parâmetros aceitos
.EXAMPLE
    Exemplo de uso do script
#>

# 2. Definição de parâmetros
param(
    [string]$Parameter1,
    [switch]$Verbose
)

# 3. Inicialização e variáveis
$ErrorActionPreference = "Stop"
$LogPath = "C:\Temp\ScriptLog.txt"

# 4. Funções auxiliares
function Write-Log {
    param([string]$Message)
    "$((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) - $Message" | Out-File -FilePath $LogPath -Append
}

# 5. Lógica principal
try {
    Write-Log "Iniciando execução do script"
    
    # Sua lógica aqui
    
    Write-Log "Script executado com sucesso"
    exit 0
}
catch {
    Write-Log "Erro: $_"
    exit 1
}
```

#### Linguagens Suportadas

* **PowerShell**: Recomendado para Windows
* **Batch/CMD**: Scripts simples Windows
* **Python**: Multiplataforma, ideal para lógica complexa
* **Shell/Bash**: Sistemas Linux e macOS

***

## Criando Scripts no Sonar

#### Acessando o Gerenciador de Scripts

1. Faça login no painel do Sonar
2. Navegue até **Policies** no menu a esquerda
3. Clique no botão **\[+]** e em **New Policy** para criar um novo script

### Configuração Básica

#### Informações Gerais

* **Nome**: Use nomenclatura descritiva e consistente
  * Exemplo: "Sistema - Limpeza de Arquivos Temporários"
* **Descrição**: Detalhe o propósito, requisitos e comportamento esperado
* **Categoria**: Organize scripts por função (Sistema, Segurança, Aplicativos)

#### Configurações Técnicas

* **Shell Type**: Selecione a linguagem apropriada
* **Supported Platforms**: Especifique SO compatíveis
* **Timeout**: Configure tempo limite adequado (recomendado: 300+ segundos para scripts complexos)

### Parâmetros e Argumentos

#### Script Arguments

Configure argumentos que o script aceita:

```powershell
-ConfigFile "C:\Config\app.conf" -Verbose -Force
```

#### Environment Variables

Defina variáveis de ambiente necessárias:

```powershell
TEMP_DIR=C:\Temp
LOG_LEVEL=INFO
```

#### Syntax Description

Documente a sintaxe para outros usuários:

```powershell
Usage: Script-Name [-Parameter1 <value>] [-Switch1] [-Switch2]
Parameters:
  -Parameter1: Descrição do parâmetro
  -Switch1: Descrição do switch
```

### Configurações Avançadas

#### Privilégios de Execução

#### Run As User

* **Marcado**: Executa no contexto do usuário logado
* **Desmarcado**: Executa como SYSTEM (recomendado para a maioria dos casos)

***

## Métodos de Execução

### Execução Individual

#### Via Interface Web

1. Na tabela de agentes, clique com botão direito no agente desejado
2. Selecione **Run Script**
3. Configure parâmetros:
   * **Script**: Selecione o script desejado
   * **Arguments**: Insira argumentos necessários
   * **Environment vars**: Configure variáveis de ambiente
   * **Timeout**: Ajuste tempo limite se necessário
   * **Run As User:** Executa no contexto do usuário logado

#### Opções de Saída

* **Wait for Output**: Monitora execução em tempo real
* **Fire and Forget**: Execução assíncrona
* **Email results**: Envio de resultados por email
* **Save to Custom Field**: Armazenamento em campo personalizado
* **Save to Agent Notes**: Adição às notas do agente

### Execução em Massa

#### Configuração de Alvos

1. Acesse **Tools > Bulk Script**
2. Configure o escopo:
   * **Client**: Todos agentes de um cliente
   * **Site**: Todos agentes de um site
   * **Selected Agents**: Agentes específicos
   * **All**: Todos os agentes

#### Filtros de Plataforma

* **Agent OS**: Windows, Linux, macOS ou All
* **Agent Type**: Servers, Workstations ou All

### Execução via automação

Associe scripts a automações

### Triggers automáticos

Execute scripts como resposta a execução de checagens de disco, memória, serviços, dentre outras.

***

### Monitoramento e Logs

#### Acompanhamento via Interface

#### Histórico de Execução

1. Selecione um agente na tabela
2. Acesse a aba **Histórico**
3. Analise resultados e códigos de saída
