Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/23: Рейтинг темы: голосов - 23, средняя оценка - 4.96
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76

Парсинг выдачи\поиск в выдаче

14.03.2023, 10:46. Показов 5459. Ответов 45

Студворк — интернет-сервис помощи студентам
добрый день, хочу настроить мониторинг сертификатов в zabbix, нашел что можно через powershell


используя такую обертку в конфигурации zabbix
Code
1
UserParameter=Certificate, "C:\Program Files\PowerShell\7\pwsh.exe" -NonInteractive -noprofile -executionpolicy bypass -command "(Get-ChildItem -Path Cert:\CurrentUser\My -Recurse -ExpiringInDays 65).subject"
получаю крякозябры
https://download.ru/g/l9BlYIEG... 1679038850


подумал из выдачи выдергивать ИНН компании и дальше по условию, что если инн = такой то то отправлять наименование компании, но есть проблема, что если в выдаче несколько элементов то отправляется только первый, как можно исправить код чтобы он делал поиск по значению и выводил инн компании и шел дальше до конца ответа, чтобы в результате получилось 2 и тд . ИНН


используется такой код
Code
1
2
3
$cert = (Get-ChildItem -Path Cert:\CurrentUser\My -Recurse -ExpiringInDays 120).subject
$inn = $cert.Split("OID.1.2.643.100.4=")[-1]
echo $cert
нужно получить список вот этих инн к примеру
https://download.ru/g/prEAnPpA... 1679039322
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.03.2023, 10:46
Ответы с готовыми решениями:

Парсинг выдачи Google
Здравствуйте! Подскажите пожалуйста, возможно ли при помощи phantomjs произвести парсинг выдачи Google? Если возможно,то как? У меня...

Парсинг выдачи поисковиков
Вопрос, каким образом при получении тела страницы результата запросов, как я могу вытащить из этого тела, адреса сайтов? Т.е вот есть...

Парсинг выдачи поисковиков
Добрый день. Есть необходимость получить результаты выдачи по поисковым словам с гугля, яхуу, алтависты и подобных. Необходимо: -...

45
1659 / 274 / 66
Регистрация: 03.06.2020
Сообщений: 707
21.03.2023, 15:42
Студворк — интернет-сервис помощи студентам
Увы:

PowerShell
1
2
3
4
5
6
 
$ dir cert:
Get-ChildItem: Cannot find drive. A drive with the name 'cert' does not exist.
 
 $ $PSVersionTable.OS
Linux 6.2.7-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 18 Mar 2023 01:06:36 +0000
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
21.03.2023, 18:21
PowerShell
1
2
dir cert:\CurrentUser\My\ -rec | select Subject, NotAfter | out-variable output
$output
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
22.03.2023, 06:57
оказался под руками ноут с windows 10 и, соответственно, Windows Powershell 5.1
и региональными установками Russian ( без галки ☐ Beta: Use Unicode UTF-8 for worldwide language support )

и на самом деле высыпается текст в кодировке 866,

но опция -Encoding utf8 всё исправляет, как я и говорил:

PowerShell
1
dir -recurse cert:/CurrentUser/My  | select Subject, NotAfter | out-file qqq -Encoding utf8
1
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
22.03.2023, 10:40  [ТС]
-Encoding utf8 это работает только при выводе в фаил, а у меня получается на лету преобразовывается
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
22.03.2023, 10:46  [ТС]
пока получилось вот так, не совсем то что хотелось, зато универсальное, а то в первом варианте замучаешься инн прописывать у всех компаний

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
function ConvertTo-Encoding ([string]$From, [string]$To){
    Begin{
        $encFrom = [System.Text.Encoding]::GetEncoding($from)
        $encTo = [System.Text.Encoding]::GetEncoding($to)
    }
    Process{
        $bytes = $encTo.GetBytes($_)
        $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
        $encTo.GetString($bytes)
    }
}
 
$cert = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays 30).Subject
if ($cert -lt 0){
 
}
ELSE {
        $cert_end = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays 30).NotAfter | ConvertTo-Json
        $cert_encod = ($cert) | ConvertTo-Encoding -From cp866 -To utf-8 
        $stroka_cert = $cert_encod, $cert_end -join " "
 
        $d1 = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays 30).NotAfter
        $d2 = Get-Date
        $ts = New-TimeSpan -Start $d2 -End $d1
        $perem_end = ("Осталось дней") | ConvertTo-Encoding -From cp866 -To utf-8 
        $stroka_end = $perem_end, $ts.Days -join " "
 
        echo $stroka_cert $stroka_end
        }
Миниатюры
Парсинг выдачи\поиск в выдаче  
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
23.03.2023, 16:21  [ТС]
сваял все таки еще одну реализацию

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function ConvertTo-Encoding ([string]$From, [string]$To){
    Begin{
        $encFrom = [System.Text.Encoding]::GetEncoding($from)
        $encTo = [System.Text.Encoding]::GetEncoding($to)
    }
    Process{
        $bytes = $encTo.GetBytes($_)
        $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
        $encTo.GetString($bytes)
    }
}
 
$days = 30
$cert = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays $days).Subject
if ($cert.count -lt 1){
# нет сертификатов
}
ELSE {
 
FOR ([int]$Counter = 1; $Counter -lt $cert.count+1; $Counter++){
 
foreach ($keyValue in $cert[$cert.count - $Counter].Split(", ")) {
    $key, $value = $keyValue.Split("=")
    if ($key -eq "CN"){
        $org = $value -replace 'ООО','' -replace '"','' -replace 'ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ',''
                
        $d1 = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays $days).NotAfter
        $d2 = Get-Date
        $ts = New-TimeSpan -Start $d2 -End $d1[$d1.count - $Counter]
        
        $stroka = $org, $ts.Days, "days" -join " " | ConvertTo-Encoding -From cp866 -To utf-8 
        echo $stroka 
        }
}
}
}
Миниатюры
Парсинг выдачи\поиск в выдаче  
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
23.03.2023, 16:41  [ТС]
автор не я, только доработал под свои нужны, оригинал находится тут https://vk.com/topic-171974497_41780617
спасибо всем, результатом доволен

Проверка сертификатов ЭЦП в zabbix
1 в конфиги zabbix прописать
Code
1
UserParameter=Certificate, "C:\Program Files\PowerShell\7\pwsh.exe" -File C:\zabbix\scripts\Cert_for_2008.ps1
2 положить скрипт по указанному пути
3 установить powershell 7
4 zabbix на сервере запускается под пользователем у кого установлены сертификаты
5 чтобы не было ложных срабатываний триггера, старые сертификаты придется удалять
Миниатюры
Парсинг выдачи\поиск в выдаче  
Вложения
Тип файла: zip Проверка сертификатов ЭЦП.zip (1.1 Кб, 3 просмотров)
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
23.03.2023, 18:26
поёт, як тетерев на току - слушает только себя;

ещё раз повторяю, не нужны абсолютно все эти ужасы с насильственной перекодировкой символов;

внутреннее представление символа в powershell/(C#)/(C++ wchar) - это UTF-16
Character and string processing in C# uses Unicode encoding. The char type represents a UTF-16 code unit, and the string type represents a sequence of UTF-16 code units.
никаких CP866 или CP1251 внутри не существует, поэтому 'на лету преобразовывать' ничего не надо.

PowerShell
1
$subj = (dir cert:/currentuser/).Subject
переменная $subj представляет из себя православную unicode-строку и ничего с ней больше делать не надо.
1
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
27.03.2023, 10:49  [ТС]
volodin661, может быть, мне конвертация нужна т.к. без нее в zabbix доходят ??????
во вложении скрины без и с
Code
1
| ConvertTo-Encoding -From cp866 -To utf-8
также исправил ошибку, когда был 1 сертификат в выдаче выдавал ошибку
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function ConvertTo-Encoding ([string]$From, [string]$To){
    Begin{
        $encFrom = [System.Text.Encoding]::GetEncoding($from)
        $encTo = [System.Text.Encoding]::GetEncoding($to)
    }
    Process{
        $bytes = $encTo.GetBytes($_)
        $bytes = [System.Text.Encoding]::Convert($encFrom, $encTo, $bytes)
        $encTo.GetString($bytes)
    }
}
 
$days = 30
$cert = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays $days).Subject
if ($cert.count -lt 1){
# нет сертификатов
}
ELSEIF ($cert.count -eq 1){
# 1 сертификат
foreach ($keyValue in $cert.Split(", ")) {
$key, $value = $keyValue.Split("=")
    if ($key -eq "CN"){
        $org = $value -replace 'ООО','' -replace '"','' -replace 'ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ',''
                
        $d1 = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays $days).NotAfter
        $d2 = Get-Date
        $ts = New-TimeSpan -Start $d2 -End $d1
        
        $stroka = $org, $ts.Days, "days" -join " " | ConvertTo-Encoding -From cp866 -To utf-8 
        echo $stroka 
        }   
}   
}
ELSE {
# 2 и более сертификата
FOR ([int]$Counter = 1; $Counter -lt $cert.count+1; $Counter++){
 
foreach ($keyValue in $cert[$cert.count - $Counter].Split(", ")) {
    $key, $value = $keyValue.Split("=")
    if ($key -eq "CN"){
        $org = $value -replace 'ООО','' -replace '"','' -replace 'ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ',''
                
        $d1 = (Get-ChildItem -Path cert:\CurrentUser\My\ -Recurse -ExpiringInDays $days).NotAfter
        $d2 = Get-Date
        $ts = New-TimeSpan -Start $d2 -End $d1[$d1.count - $Counter]
        
        $stroka = $org, $ts.Days, "days" -join " " | ConvertTo-Encoding -From cp866 -To utf-8 
        echo $stroka 
        }
}
}
}
Миниатюры
Парсинг выдачи\поиск в выдаче   Парсинг выдачи\поиск в выдаче  
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
27.03.2023, 19:49
forestrg,

то есть, ты утверждаешь,
что после
PowerShell
1
dir cert:\CurrentUser\My\ -rec | select Subject > result
файл result имеет кодировку utf8, но вместо русских букв там что-то не то ?
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
27.03.2023, 23:15  [ТС]
volodin661,
в консоли powershell выводится по-русски.
как проверить кодировку консоли, чтобы знать в чем выводит powershell?
0
1659 / 274 / 66
Регистрация: 03.06.2020
Сообщений: 707
27.03.2023, 23:53
Цитата Сообщение от forestrg Посмотреть сообщение
как проверить кодировку консоли, чтобы знать в чем выводит powershell?
PowerShell
1
[console]::OutputEncoding
Добавлено через 5 минут
Я часто меняю кодировку cue-файлов. Скачаешь с рутрекера, все в cp1251, чтобы в метаданные попал utf-8 перекодирую так:

PowerShell
1
(gc file.cue -enc ansi) | sc file.cue
Это с учетом того, что системная локаль и консоль en_US.UTF8
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
27.03.2023, 23:56
forestrg,

содержимое файла result, о котором я спрашивал,
не имеет отношения к кодировке консоли.

попробую в третий раз ( как в русских народных сказках ):

в версиях powershell core перенаправление в файл (>) осуществляется
в кодировке Utf8. Если русские буквы в этом файле отчетливо различимы
невооруженным глазом, значит дискуссию, которая длится уже третьи сутки, можно закрывать.
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
28.03.2023, 10:03  [ТС]
volodin661,
в консоли cp866

что такое powershell core?
у меня сервер старый 2008r2 там до 5 можно проапгрейдится, но я поставил 7
не в файл перенаправляю, а "на лету" что ли получаю, вы же только про powershell говорите, а попробуйте его в связке с zabbix

Вы сами устроили тут дискуссию, что мол я не правильно что то делаю, я показываю что по другому, конкретно у меня не работает или работает не так, может быть у кого то такая же проблема будет и ему пригодится мое решение
Миниатюры
Парсинг выдачи\поиск в выдаче  
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
28.03.2023, 10:42
forestrg,

просто ответь на вопрос.


Цитата Сообщение от forestrg Посмотреть сообщение
что такое powershell core?
powershell 7 относится к версии Core ( это мультиплатформенная реализация в отличие от Windows Powershell 5.1)

Добавлено через 5 минут
( вот этот вопрос: Парсинг выдачи\поиск в выдаче )
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
28.03.2023, 11:37  [ТС]
в файле по-русски
Миниатюры
Парсинг выдачи\поиск в выдаче  
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
28.03.2023, 11:52
ну вот.
то есть, все необходимые условия для полного успеха имеются.

о чём я и говорил.
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
28.03.2023, 11:54  [ТС]
Так я не спорю, я просто говорю, что прямая выдача в zabbix идет не в utf8 почему-то, я же не в файл экспортирую, а потом zabbix его забирает
Скрипт вызывается zabbix-ом на нужном сервере, а чего дальше с кодировкой происходит хрен знает
0
Нарушитель
7166 / 2335 / 353
Регистрация: 10.12.2013
Сообщений: 8,075
28.03.2023, 12:16
уфф..

а что мешает отдать zabbix-у файл, извините за прямоту ?
0
4 / 4 / 0
Регистрация: 10.11.2012
Сообщений: 76
28.03.2023, 12:22  [ТС]
тоже как вариант, сохраняй в файл, а потом парсить файл, но опять никаких гарантий нет что не будет проблем с кодировкой.
решение было, мне показалось проще его допилить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.03.2023, 12:22

Парсинг поисковой выдачи
У меня есть проблема на Python. Не получается спарсить результаты поиска Bing. Не знаю, что не так по коду. Ничего не выходит. Программу...

парсинг выдачи ИПС
Привет всем! пожалуйста не кидайтесь тапками, но не могу понять про парсинг выдачи. я писала парсеры на контент, но это... 1) Правильно...

Парсинг выдачи Google
Сабж, как спарсить результаты выдачи с Google? Ссылок в коде страницы нет, но если в google chrome открыть код элемента ссылки, то ссылка...

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

Парсинг результатов выдачи яндекса
Люди. Поможите. Нужно пропарсить результат выдачи яндекса. Делаю на php использовал file_get_contents(),fopen(), но результат...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru