# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.datadike.com/product-guide/configuracoes/sonar/rmm/comandos-remotos/scripts-personalizados.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
