Instalaçāo em grandes redes
Esse script em PowerShell varre uma rede encontrando os dispositivos que respondem a ping
# Caminhos e credenciais
$arquivo = "sonar-agent-discover-workstation-amd64.exe"
$origem = "\\diretorio\NETLOGON\DataDike\$arquivo"
$usuario = "seulogin"
$senha = 'suasenha'
# Loop de IPs de 172.24.18.1 a 172.24.18.254
for ($i = 1; $i -le 254; $i++) {
$DESTINO_IP = "172.24.81.$i"
Write-Host "`n[INFO] Processando $DESTINO_IP..."
# Verifica se a máquina responde ao ping
$pingResult = Test-Connection -ComputerName $DESTINO_IP -Count 1 -Quiet
if ($pingResult) {
# Máquina online, tenta copiar e executar o arquivo
Write-Host "[INFO] Máquina online, copiando arquivo..."
try {
robocopy "\\diretorio\NETLOGON\DataDike" "\\$DESTINO_IP\c$\Temp" $arquivo /R:0 /W:0 /IS | Out-Null
Write-Host "[INFO] Arquivo copiado com sucesso para $DESTINO_IP"
# Executar o instalador via PsExec
Write-Host "[INFO] Executando o instalador via PsExec..."
.\PsExec.exe \\$DESTINO_IP -u $usuario -p $senha -h -i -d "\\$DESTINO_IP\C$\Temp\$arquivo" /silent -accepteula
Write-Host "[INFO] Instalação iniciada em $DESTINO_IP"
}
catch {
Write-Warning "[ERRO] Não foi possível copiar ou executar o arquivo em $DESTINO_IP. Erro: $_"
}
}
else {
Write-Warning "[SKIP] $DESTINO_IP não está acessível."
}
}
Write-Host "`n[INFO] Processamento concluído."
Como pré-requisito para paralelismo, instale o Microsoft Powershell no minimo 7.5
# Requer PowerShell 7+
# Caminhos e credenciais
$arquivo = "nome-do-agente.exe" # Nome do instalador do agente
$origem = "\\servidor\caminho\para\arquivo\$arquivo" # Caminho de origem do arquivo
$usuario = "DOMINIO\usuario" # Usuário com permissão para executar remoto
$senha = 'SENHA_SECRETA' # Senha do usuário
$logPath = "C:\Temp\install_log.txt" # Caminho para o arquivo de log
# Garante C:\Temp
if (!(Test-Path "C:\Temp")) {
New-Item -ItemType Directory -Path "C:\Temp" | Out-Null
}
# Limpa log
"" | Out-File -FilePath $logPath
# Sub-redes alvo
$subredes = @(
"172.21.12",
"172.21.13"
# Adicione mais sub-redes aqui
)
# Monta lista de IPs
$ips = foreach ($subrede in $subredes) {
1..254 | ForEach-Object { "$subrede.$_" }
}
# Usa paralelismo para processar os IPs
$ips | ForEach-Object -Parallel {
$DESTINO_IP = $_
Write-Host "`n[INFO] Processando $DESTINO_IP..."
$pingOutput = ping -n 1 -w 1000 $DESTINO_IP
if ($pingOutput -match "TTL=(\d+)") {
try {
$ttl = [int]$matches[1]
Write-Host "[INFO] TTL=$ttl"
if ($ttl -ne 126) {
Write-Host "[SKIP] TTL diferente de 126, pulando $DESTINO_IP"
return
}
} catch {
Write-Warning "[ERRO] TTL inválido em $DESTINO_IP. Pulando..."
return
}
$sonarPath = "\\$DESTINO_IP\c$\Program Files\Sonar"
if (Test-Path $sonarPath) {
Write-Host "[SKIP] Sonar já instalado em $DESTINO_IP"
return
}
Write-Host "[INFO] Copiando arquivo para $DESTINO_IP..."
robocopy $using:origem "\\$DESTINO_IP\c$\Temp" $using:arquivo /R:0 /W:0 /IS | Out-Null
Write-Host "[INFO] Executando PsExec..."
.\PsExec.exe \\$DESTINO_IP -u $using:usuario -p $using:senha -h -i -d "\\$DESTINO_IP\C$\Temp\$using:arquivo" /silent -accepteula
"$DESTINO_IP - INSTALADO em $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" | Out-File -FilePath $using:logPath -Append
} else {
Write-Host "[SKIP] $DESTINO_IP não respondeu ao ping"
}
} -ThrottleLimit 10
Descrição do Script de Instalação Paralela do Agente Sonar
Este script PowerShell automatiza a instalação remota do agente Sonar em múltiplas máquinas de redes específicas, utilizando recursos de paralelismo do PowerShell 7+ para acelerar o processo.
Principais funcionalidades:
Suporte a múltiplas sub-redes: permite definir uma lista de sub-redes alvo, criando dinamicamente o conjunto de IPs a serem processados.
Verificação prévia via ping: antes de tentar a instalação, o script faz um ping para cada IP, garantindo que a máquina está online e acessível.
Validação do TTL do ping: o script confere o valor do TTL para validar que o dispositivo pertence à rede desejada (TTL 126).
Verificação se o agente já está instalado: antes de instalar, verifica se o diretório do Sonar já existe na máquina remota para evitar instalações redundantes.
Cópia do instalador: utiliza
robocopy
para transferir o instalador para a pasta temporária da máquina remota.Execução remota do instalador: usa
PsExec
para executar o instalador no computador remoto, com parâmetros para instalação silenciosa.Paralelismo: roda até 10 instalações em paralelo, acelerando o processo em redes grandes.
Registro em log: mantém um arquivo de log local com o status de cada instalação, facilitando auditoria e monitoramento.
Requisitos:
PowerShell 7 ou superior, para suporte ao parâmetro
-Parallel
noForEach-Object
.Permissões adequadas para acesso remoto (compartilhamentos e execução remota).
PsExec disponível no diretório do script.
Pasta
C:\Temp
existente ou criada automaticamente para arquivos temporários e logs.
Atualizado
Isto foi útil?