Kamil
https://habrahabr.ru/post/309172/
Kamil
но она не взлетит у меня, надо пилить
Aleksei
Для скриптов установки агента будем использовать, по хардкору, только родную командную строку Windows, без питонов, перлов и т.п.,
Aleksei
пош дак не хардкор =)
Kamil
😄 хз я пош юзаю
Aleksei
я давно давно давно заббиксом мониторил состоятние UPSов
Aleksei
но там просто запускалась консольная утилитка с сорцфоржа
Aleksei
вроде писала в файлик, а файлик я парсил и параметры утшивал в заббикс
Aleksei
все делалось на чистом незамутненном cmd
Sergey
я это так запускаю
$txt = D:\downloads\smartmontools-6.5-1.win32-setup\bin64\smartctl.exe -A /dev/sda -d ata | Out-String
Готово шеф
function Get-ParamFromCmd
{
[CmdletBinding()]
[OutputType([PSObject])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeline=$true,
Position=0)]
[string]$Line,
[ValidateNotNullOrEmpty()]
[string]$Match = "(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)"
)
Begin
{
if($Debug) { $debugPreference = "Continue" }
if($Verbose) { $VerbosePreference = "Continue" }
Write-Verbose "Шаблон: $($Match)"
$Obj = @()
}
Process
{
Write-Verbose "Строка: $($Line)"
if($Line -match $Match)
{
Write-Verbose "Совпадение найдено"
$Obj += New-Object -TypeName PSObject -Property @{
ID = $Matches[1]
ATTRIBUTE_NAME = $Matches[2]
FLAG = $Matches[3]
VALUE = $Matches[4]
WORST = $Matches[5]
THRESH = $Matches[6]
TYPE = $Matches[7]
UPDATED = $Matches[8]
WHEN_FAILED = $Matches[9]
RAW_VALUE = $Matches[10]
function Get-ParamFromCmd
{
[CmdletBinding()]
[OutputType([PSObject])]
Param
(
[Parameter(Mandatory=$true,
ValueFromPipelineByPropertyName=$true,
ValueFromPipeline=$true,
Position=0)]
[string]$Line,
[ValidateNotNullOrEmpty()]
[string]$Match = "(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)"
)
Begin
{
if($Debug) { $debugPreference = "Continue" }
if($Verbose) { $VerbosePreference = "Continue" }
Write-Verbose "Шаблон: $($Match)"
}
Process
{
Write-Verbose "Строка: $($Line)"
if($Line -match $Match)
{
Write-Verbose "Совпадение найдено"
New-Object -TypeName PSObject -Property @{
ID = $Matches[1]
ATTRIBUTE_NAME = $Matches[2]
FLAG = $Matches[3]
VALUE = $Matches[4]
WORST = $Matches[5]
THRESH = $Matches[6]
TYPE = $Matches[7]
UPDATED = $Matches[8]
WHEN_FAILED = $Matches[9]
RAW_VALUE = $Matches[10]
}
}
}
end
{
}
}
$Lines = d:\Data\Downloads\smartmontools-6.5-1.win32-setup\bin64\smartctl.exe -A /dev/sda -d ata | Out-String -Stream
$Lines | ? {$_} | Get-ParamFromCmd
Aleksei
Сергей добрячок
Sergey
чутка упростил
Kamil
Sergey
ну тебе сразу массив строк дается + пустые строки
Kamil
вот это вот $Lines | ? {$_} | Get-ParamFromCmd воообще заклинание какое то
Sergey
? - алиас для Where-Object
Kamil
почему $Obj += работает. хотя до этого вроде также самая конструкция была...
Sergey
полностью
Where-Object {$_ -ne $null}
Sergey
Sergey
и потом я уже исправил пост :) нет там $Obj
Kamil
не понял вопроса
ругалось при попытке так сделать, типа нет свойства аддитивности
Sergey
ээммм
ну надо еще раз код смотреть
Kamil
на ду пофигю работает и ладно, осталось понять как и допилить еще
Kamil
спс
Sergey
велкам
Sergey
пошик вообще гадкий язык :)
иногда такое доставляет
например
$_ -ne $null
не всегда тоже что
$null -ne $_
Kamil
гг
Kamil
как так
Sergey
у мня уже привычка выработалась использовать второй вариант
Sergey
такси приехало, поехал домой
Anton
Пришёл к успеху))
Andrey
ps - зашибись - лучшее, что ms придумал
Sergey
да, хорошая идея в основе
Sergey
исполнение местами страдает
Anonymous
Коллеги, есть грамотный мануал как рапланировать установку обновлений. Вроде всё просчитал, а компы не ребутаются сами. Сижу жду уж dedline прошёл.
Aleksei
https://retropie.org.uk/docs/ кажется это бомба
Aleksei
давно видел но руки как-то не дошли
Aleksei
а щаз два компа есть на миниитх
Sergey
понеслись апдейты
Sergey
Все же знают что будет важный секурити под офис, уязвимость 0-day которого уже активно используется?
Sergey
рекомендую не откладывать тестирование и раскатку
Kamil
Sergey
всех
Sergey
http://www.securitylab.ru/news/485824.php
Aleksei
да
Aleksei
еще вчера
Sergey
гуд, моя совесть чиста :)
Aleksei
я вот тока всегда задумывался насколько это правда что активно эксплуатируется киберпреступниками =)
Sergey
Kamil
Oleg
хорошая вещь. многим пригодится
Kamil
почему такая конструкция
$Lines = d:\Downloads\smartmontools-6.5-1.win32-setup\bin64\smartctl.exe -A /dev/sda -d ata | Out-String -Stream
работает правильно, а такая
$smartctl = "d:\Downloads\smartmontools-6.5-1.win32-setup\bin64\smartctl.exe"
$arg = '-A /dev/sda -d ata'
$Lines = & $smartctl $arg | Out-String -Stream
не отрабатывается, аргумент не воспринимется корректно?
Sergey
"$smartctl $arg"
Kamil
"$smartctl $arg"
фиг
& : Имя "d:\Downloads\smartmontools-6.5-1.win32-setup\bin64\smartctl.exe -A /dev/sda -d ata" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте пр
авильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
Sergey
расстрелять бы вас всех
Sergey
Invoke-Expression "$smartctl $arg"
Sergey
а еще лучше так:
Sergey
$res = Invoke-Expression "$smartctl $arg 2>&1"
Sergey
читай дальше блоги кумаров российских
Sergey
"примерно также"
Sergey
Kamil
а что дает это Sends errors (2) and success output (1) to the success output stream.?
Sergey
+100 к карме
Sergey
ты что, читать не умеешь? тебе же по русски написано что делает ЭТО
Kamil
что делает я понял, зачем это?
Sergey
попробуй - узнаешь
Sergey
без и с
Kamil
ошибку бы сгенерить еще
Kamil
вроде вывод тотже самый
Sergey
омг
Sergey
$lastexitcode придумали трусы
Kamil
и с ошибкой тоже самое
Kamil
аа ошибка приложения
Sergey
давай обмен?
Sergey
у меня есть проблема:
Sergey
в scom перестал почему то работать сборщик данных (rule)