Скрипт обращается к API RabbitMQ для получения списка очередей. Список фильтруется так, чтобы включать только очереди, соответствующие указанному шаблону (amq.gen*
).
Функция Get-Queues
получает список доступных очередей, а функция remove-queue
удалениет найденные очереди соответствующие заданной маске.
$log_path = "C:\zabbix_agent\_test.log"
$size_mb = $($(Get-ChildItem $log_path | Measure-Object -Property Length -sum).Sum /1Mb)
$size_mb_max = 5;
$queues_like = "amq.gen*"
# Учетные данные
$username = "admin"
$password = "admin"
$baseurl_srv = "http://127.0.0.1:15672/api/queues/"
if ($size_mb -gt $size_mb_max){
Remove-Item -Path $log_path -Force -ErrorAction Ignore
}
Add-Content -Value "*************************" -Path $log_path
Add-Content -Value "baseurl_srv = $baseurl_srv" -Path $log_path
function Get-Queues{
param (
[string] $uname,
[string] $passwd,
[string] $url
)
# Кодирование учетных данных в base64
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(($uname+ ":" +$passwd)))
# Заголовок Authorization
$headers = @{
Authorization = ("Basic {0}" -f $base64AuthInfo)
}
# Выполняем GET-запрос с заголовком Authorization
$response = Invoke-RestMethod -Uri $url -Method Get -Headers $headers
# Выводим результат
$queuees = @()
foreach ($m in $response.name)
{
$queuees += $m
}
return $queuees
}
function remove-queue{
param (
[string] $uname,
[string] $passwd,
[string] $url,
[object] $queues_mass
)
foreach ($q1 in $queues_mass){
Add-Content -Value "queue deleted = $q1" -Path $log_path
$encoded_queue_name = [System.Uri]::EscapeDataString($q1)
$_baseurl = $url + "%2F/" + $encoded_queue_name
# Кодирование учетных данных в base64
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(($uname+ ":" +$passwd)))
# Заголовок Authorization
$headers = @{
Authorization = ("Basic {0}" -f $base64AuthInfo)
}
try{
# Выполняем GET-запрос с заголовком Authorization
$response = Invoke-RestMethod -Uri $_baseurl -Method Delete -Headers $headers
Add-Content -Value $response -Path $log_path
}
catch{
Add-Content -Value $($_.Exception.Message) -Path $log_path
}
finally{
Add-Content -Value "*************************" -Path $log_path
}
}
}
$qs = Get-Queues -uname $username -passwd $password -url $baseurl_srv
$massiv_for_delete_queues = @();
foreach ($_q in $qs)
{
if ($_q -like $queues_like)
{
Write-Host $_q
$massiv_for_delete_queues += $_q;
}
}
remove-queue -uname $username -passwd $password -url $baseurl_srv -queues_mass $massiv_for_delete_queues