![]() |
вытянуть информацию из html полученного через curl
Доброго всем времени суток. Есть задача, которую надо решить именно через bat. Через curl скачивается страничка и из нее нужно извлечь нужную информацию, на скрине отмечено, что нужно вытянуть мак-адрес, номер телефона, модель и серийный номер. На данный момент батник уже может: узнает какая подсеть на компе, потом сканит диапазон из этой подсети, потом curl скачивает странички с айпишки с данными. А вот далее нужно, чтобы батник мог как-то вытянуть данные со странички и плюс как-то мог сам подставить все странички, которые есть в папке.
|
@echo off
::chcp 866 cd /d "%~d0%~p0" :: Удаляем файлы с прошлого запуска ERASE 1.txt, 2.txt, 3.txt, 4.txt :: узнаем ip пк setlocal enabledelayedexpansion (for /f "usebackq tokens=2 delims=:" %%a in (`ipconfig ^| findstr /r "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"`) do ( set _temp=%%a set _ipaddress=!_temp:~1! echo !_ipaddress! >1.txt )) :: убираем последнюю цыфру ip for /F %%i in (1.txt) do set result=%%i set str=%result% Echo %str:~0,7% >2.txt :: берем предыдущее значение и пингуем 130-190. for /F %%i in (2.txt) do set result2=%%i for /l %%i in (130,1,190) do ping -n 1 -w 400 -l 1 %result2%.%%i >nul 2>&1 && arp -a %result2%.%%i|findstr "динам">>3.txt :: выбираем из списка только ip FOR /f "usebackq delims= " %%i IN ("3.txt") DO echo %%i>> 4.txt ::подставляем ip в команду скачивания странички. FOR /f "usebackq delims=" %%i IN ("4.txt") DO ( set result3=%%i D:\bat\phone\curl-7.69.1-win64-mingw\bin\curl -k -o %%i.txt https://%%i/CGI/Java/Serviceability?...tistics.device >nul 2>&1 ) ::ищем и копируем нужно на страничке pause в общем батник для сбора информации о телефонах в подсети, в которой находится пк. У телефонов только есть веб морда, с которой есть нужная инфа. |
Цитата:
Код:
$html = (gc "D:\temp\10.83.3.150.html.txt" -encoding utf8) -replace "<.*?>",";" -split ';+ ' -replace "^.*;" |
Цитата:
|
Вряд ли переписать будет сложно.
В Powershell есть команда curl, это не точная копия, но, полагаю, с вашей задачей справится. На мой взгляд, это гораздо понятнее батников с их нагромождением костылей и спецсимволов. К тому же, в PS мы имеем дело с объектами, а не с текстом. |
Griboed0ff, переписывайте.
|
Пробовал запустить отрабатывает без ошибок, но где результат посмотреть или записать его в файл?!
Цитата:
|
Я поместил результат в переменную $obj.
Чтобы вывести её содержимое, нужно написать $obj после скрипта. Самый наглядный метод - выполнять скрипт из Powershell ISE (см. в меню Пуск). Там есть кнопочка "плей", как на магнитофоне. Вам файл в каком виде нужен? |
Цитата:
Тогда помогите пожалуйста с остальным: задача снять данные с веб морд айпишек в диапазоне *.*.*.130-*.*.*.190, в подсети где находится комп на котором запускается, сложить это все в .csv или txt curl на компах не установлен, я просто ложил рядом с батником и указывал в батнике путь к нему. Можно ли в Powershell только встроенными средствами? |
Если вы в Powershell выполните что-то типа
Код:
(curl "https://192.168.0.130/CGI/Java/Serviceability?adapter=device.statistics.device").rawcontent |
Цитата:
|
Приведите кусок того, что будет в результате:
Код:
$report = @() |
выдает ошибку
Цитата:
|
Тогда замените строку
Код:
$ips = 130..190 |% {"192.168.0." + $_} Код:
$ips = "10.83.3.1","10.83.3.2" |
вписал два реальных ip на которых точно есть нужная html страничка.
|
Вставьте в начало скрипта вот этот код:
Код:
add-type @" |
Цитата:
|
Где можно получить IP компов? Есть DNS? Домен? DHCP?
Надо разобраться и найти закономерности строения тех или иных сетей. Либо, придётся рисовать скрипт для каждой подсети отдельно. |
можно просто взять ip пк, с которого запускается скрипт, отбросить последнюю цифру и записать в переменную для дальнейшей обработки.
$ips = 130..190 |% {"192.168.0." + $_}, 192.168.0. заменить на переменную с прошлого шага |
в батнике так и было сделано, но проблема, что в ps я не знаю как это сделать.
|
Код:
$ips = 130..190 |% {"$((Get-Netipaddress |? ipaddress -match "^10\.").ipaddress -replace "\d+$")" + $_} Код:
$report |export-csv -Path c:\temp\123.csv -Delimiter ';' -Encoding utf8 -NoTypeInformation |
почему то повторяются значения.
|
Вставьте после $report += $obj
Код:
Clear-Variable html,obj Код:
$obj = [pscustomobject]@{'IP' = $ip |
еще заметил что разные модели имеют разный адрес странички, http://10.83.3.156/ и если изменить адрес на $html = (curl "http://$ip").rawcontent -replace "<.*?>",";" -split ';+ ' -replace "^.*;", то ничего не находит
MAC-адрес Номер телефона Серийный номер Номер модели --------- -------------- -------------- ------------ HTTP/1.1 200 OK... |
другие модели имеют другую структуру страничек.
|
Цитата:
|
изменил адрес странички, айпишки, которые до этого нормально отдавали данные, даже просто по адресу (http://10.83.3.156/) нормально работает и дальше. Но другие модели не получается снять данные, похоже поиск неправильно работает.
|
Цитата:
А как это батником вы собирались реализовывать, вообще уму непостижимо. |
две модели у нас, у второй просто другой адрес, структура поменялась и получается парсер не срабатывает. Я так понимаю дело в
Цитата:
|
Ладно, две попробуем.
Надо эти HTML-файлы парсить по-разному, там даже в одной и той же таблицы тэги отсортированы по-разному, вот, например, в нужной таблице: Первая модель - <table cellspacing="10" cellpadding="0" border="0"> Вторая модель - <TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0"> |
Цитата:
Цитата:
|
Цитата:
Чуток изменить его под задачу и вполне сгодится: Script.ps1
Код:
param ( только цикл перебора адресов прикрутить и будет работать... Сегодня уже лень думать... если что, завтра прикручу. |
Цитата:
Вот всё вместе, пробуйте: Код:
add-type @" |
CP-7821 работает нормально, CP-6921 нет
|
исправил выше
|
Цитата:
|
Цитата:
|
Цитата:
В принципе, можно заниматься тем, чем мы тут занимались в этой теме, но это только ради спортивного интереса, в целом это, конечно, костыли. |
Цитата:
|
Цитата:
Если структура требуемых страниц отличается, то естественно, придется скрипт корректировать... т.е. так, чтобы была полная универсальность, в костылях сделать не получится... Цитата:
Код:
[pscustomobject]@{ Т.к. исходный парсер использует все таблицы, то в конечном пришлось добавить параметр номера таблицы (нумерация начинается с 0), в которой находятся необходимые данные. Этот номер сильно зависит от структуры страницы и автоматом его определять сложно, необходима привязка к конечным данным. Цитата:
|
Цитата:
|
добавил сверху то, что рекомендовал DJ Mogarych. Теперь ошибка другая.
|
Цитата:
Цитата:
|
Цитата:
ну и подкорректировал немного скрипт, плюс вывод в CSV Код:
param ( |
Цитата:
Только дублирует информацию и почему только один вид айпишек. |
Цитата:
В общем, заменить эту строку: Код:
$ips = 130..190 |% {[string]$((Get-Netipaddress |? ipaddress -match "^10\.").ipaddress -replace "\d+$") + $_} Код:
$ips = 130..190 |% {[string]$((Get-Netipaddress | Цитата:
Чтобы получить все сети, придется писать сканер сети (что нежелательно), либо составить заранее список сетей... Примерно так: Код:
$net = '10.83.3.', '10.80.5.', '10.82.0.' переделать строку в такую: Код:
$ips = $net|%{$ip = $_;130..190|%{$ip + $_}}|?{test-connection $_ -count 1 -q} |
результат
IP MAC-адрес Номер телефона Серийный номер Номер модели
10.83.3.130 ??? ??? ??? ??? 10.83.3.131 ??? ??? ??? ??? 10.83.3.132 ??? ??? ??? ??? 10.83.3.133 ??? ??? ??? ??? 10.83.3.134 ??? ??? ??? ??? 10.83.3.135 ??? ??? ??? ??? 10.83.3.136 442B031A8F7F 60314 PXN16090HOX CP-6921 10.83.3.137 442B031A8F7F 60314 PXN16090HOX CP-6921 10.83.3.138 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.139 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.140 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.141 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.142 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.143 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.144 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.145 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.146 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.147 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.148 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.149 442B031A7868 60319 PXN16090A7Q CP-6921 10.83.3.150 ??? ??? ??? ??? 10.83.3.151 ??? ??? ??? ??? 10.83.3.152 442B031A8F85 60136 PXN16090HP3 CP-6921 10.83.3.153 442B031A947B 60565 PXN16090FUP CP-6921 10.83.3.154 442B031A947B 60565 PXN16090FUP CP-6921 10.83.3.155 ??? ??? ??? ??? 10.83.3.156 A44C1147B379 60397 PXN161704LE CP-6921 10.83.3.157 A44C1147B379 60397 PXN161704LE CP-6921 10.83.3.158 A44C1147B379 60397 PXN161704LE CP-6921 10.83.3.159 A44C1147B379 60397 PXN161704LE CP-6921 10.83.3.160 A44C1147B379 60397 PXN161704LE CP-6921 10.83.3.161 442B031A9AF3 60504 PXN16090F3D CP-6921 10.83.3.162 442B031A9AF3 60504 PXN16090F3D CP-6921 нет тут другое он записал на каждую найденную айпишку одни и те же данные. Так было уже Цитата:
Цитата:
По идее решение устроило и работает как надо. Как я понял в вашем парсере проще настроить по таблицам и колонкам. Если доделаем то в теории я смогу потом его переделать под другую ситуацию или это решение поможет кому-то в похожей ситуации. |
Цитата:
Вы проверили наличие хостов в сети? В моем коде, реализация иная, т.е. это не то же самое... заполняется теми же данными только из-за отсутствия реальных IP в сети, т.е. цикл заполнения происходит, но IP отсутствует, данные не считываются и строка заполняется предыдущими... Цитата:
Сделайте так, как я выше написал... т.е., как минимум, строка должна быть такой: Код:
$ips = 130..190 |% {[string]$((Get-Netipaddress|? ipaddress -match "^10\.").ipaddress -replace "\d+$") + $_}|?{test-connection $_ -count 1 -q} Цитата:
Код:
(Get-Netipaddress |? ipaddress -match "^10\.").ipaddress Цитата:
Добавлено: Цитата:
Код:
(Get-Netipaddress |? ipaddress -match "^10\.").ipaddress Код:
[array]$arr = $((Get-Netipaddress |? ipaddress -match "^10\.").ipaddress -replace "\d+$") |
выполнил ваши рекомендации, похоже, что проблема в том, что парсер настроен на один тип страничек, а у двух разных моделей данные находятся в разных таблицах. Результат выполнения вашего скрипта и DJ Mogarych.
|
Цитата:
Здесь, проблема с кодировкой у командлета invoke-restmethod, т.е. это по алгоритму, то же самое, что и invoke-webrequest, и в том, и в другом используется движок IE... что там у него внутри происходит и как именно выбирается кодировка - известно только разрабам. Попробуйте исключить перекодировку в этой строке: Цитата:
Доступные кодировки: Код:
[text.encoding]::getencodings() В крайнем случае, можно с помощью invoke-webrequest скачивать файл, создавать его в виде промежуточного и потом использовать в разборе... так кодировка ломаться не должна. |
ага вот она где ошибка:
Скрытый текст
IP MAC-адрес Номер телефона Серийный номер Номер модели
10.83.3.136 ÐÐµÑ ÐÐµÑ ÐÐµÑ ÐÐµÑ 10.83.3.138 ÐÐµÑ ÐÐµÑ ÐÐµÑ ÐÐµÑ 10.83.3.150 00778DF9AE1C 60013 WZP230900DN CP-7821 10.83.3.152 ÐÐµÑ ÐÐµÑ ÐÐµÑ ÐÐµÑ 10.83.3.153 ÐÐµÑ ÐÐµÑ ÐÐµÑ ÐÐµÑ 10.83.3.155 6CFA8903D741 60103 WZP18210A38 CP-7821 10.83.3.156 ÐÐµÑ ÐÐµÑ ÐÐµÑ ÐÐµÑ 10.83.3.161 ÐÐµÑ ÐÐµÑ ÐÐµÑ ÐÐµÑ 10.83.3.163 00778DF9B414 60135 WZP230901QL CP-7821 10.83.3.165 00778DF9B416 60394 WZP230901QN CP-7821 10.83.3.166 6CFA8903E9B2 60506 WZP18210DT9 CP-7821 10.83.3.167 00778DF8C919 60146 WZP23070DGM CP-7821 10.83.3.168 00778DF8C936 60355 WZP23070DHG CP-7821 10.83.3.171 00778DF9B413 60163 WZP230901QK CP-7821 10.83.3.172 00778DF8C948 60116 WZP23070DJ0 CP-7821 10.83.3.174 00778DF8C95A 60390 WZP23070DJJ CP-7821 10.83.3.175 00778DF9B400 60158 WZP230901Q0 CP-7821 мб запускать парсер с кодировкой записывать удачное, а вторым циклом без кодировки, так же записывать только удачные? |
Цитата:
Выполните: Код:
iwr '10.83.3.136' -out '10.83.3.136.html' |
вот странички.
|
Цитата:
Ну, да ладно. Должно помочь вот это: script.ps1
Код:
param ( |
Цитата:
теперь в этой теме два решения. Осталось понять в чем различия, плюсы минусы. |
Цитата:
Надо бы проверить варианты: Код:
$html1 = (curl "https://10.83.3.136/CGI/Java/Serviceability?adapter=device.statistics.device").rawcontent А плюсы и минусы: 1. DJ Mogarych 2. YuS_2, 1. Плюсы: Работает быстрее. Минусы: Привязка к номеру модели. Привязан к внутренней структуре таблицы (если, например, добавится столбец с пустыми значениями, то код придется корректировать) При наличии атрибутов rowspan или colspan, значения таблицы могут "поплыть", т.е. выходной файл не будет соответствовать исходной таблице. 2. Плюсы: Разбирает таблицу даже при наличии colspan и rowspan Нет зависимости от пустых столбцов. Минусы: Работает медленнее Есть привязка к структуре таблицы (две колонки с данными), если количество колонок с данными изменяется, потребуется корректировка. |
Круто, на самом деле хочу попробовать ваш код на мфу с мордой, буду дергать версию прошивки модель ревизия. думаю все будет примерно так же.
Цитата:
результат
PS C:\WINDOWS\system32> $html1 = (curl "http://10.83.3.136").rawcontent $html2 = irm "http://10.83.3.136" $html1 $html2 HTTP/1.1 200 OK Connection: close Content-Type: text/html Server: WindRiver-WebServer/4.4 WWW-Authenticate: Basic realm="SEP442B031A8F7F" <HTML> <HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8"/><TITLE>Cisco Systems, Inc.</TITLE> </HEAD> <BODY bgcolor="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" text="#003031"><TABLE BORDER="1" WIDTH="100%" HEIGHT="100%" CELLSPACING="0" CELLPADDING="0" bordercolor="#003031"><TR> <td WIDTH="200" HEIGHT="100" ALIGN=center><A HREF="http://www.cisco.com"><IMG SRC="cisco_Logo.gif" width="130" height="95"></A></TD><td HEIGHT="50" bgcolor="#003031"><p ALIGN=center><B><font color="#FFFFFF" size="6 ">ÐнÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑÑÑойÑÑве</FONT></B> <p ALIGN=center><B><font color="#FFFFFF" size="4">IP-ÑелеÑон Cisco CP-6921 (</FONT></B> <font color="#FFFFFF"><strong>SEP442b031a8f7f</strong> </font><B><font color="#FFFFFF" size="4">)</FONT></FONT></B></TD > </TR> <TR><td WIDTH="200" ALIGN=center VALIGN=top bgcolor="#003031"><TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0"> <TR> <TD><a href="/">ÐнÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑÑÑойÑÑве</a></TD> </TR> <TR> <TD><a href="NetworkConfiguration">ÐаÑÑÑойка ÑеÑи</a></TD> </TR> <!--<TR> <TD><a href="device.html">ÐаÑамеÑÑÑ ÑÑÑÑойÑÑва</a></TD> </TR> <TR> <TD><a href="security.html">ÐаÑÑÑойкa безопаÑноÑÑи</a></TD> </TR> <TR> <TD><a href="status.html">СоÑÑоÑние</a></TD> </TR>--> <TR> <TD><B><font color='#FFFFFF'>СÑаÑиÑÑика ÑеÑи</FONT></B></TD> </TR> <TR> <TD> <a href="EthernetInformation">ÐнÑоÑмаÑÐ¸Ñ Ð¾ Ethernet</A></TD> </TR> <TR> <TD> <a href="PortInformation?1">СеÑÑ</A></TD> </TR> <TR> <TD><B><font color='#FFFFFF'>ÐÑÑÐ½Ð°Ð»Ñ ÑÑÑÑ-ва</FONT></B></TD> </TR> <TR> <TD> <a href="console.html">ÐÑоÑоколÑ</A></TD> </TR> <TR> <TD> <a href="coredump.html">ÐÐ°Ð¼Ð¿Ñ ÑдÑа</A></TD> </TR> <TR> <TD> <a href="status.html">СообÑÐµÐ½Ð¸Ñ Ð¾ ÑоÑÑоÑнии</A></TD> </TR> <TR> <TD> <a href="debug.html"> ÐоказаÑÑ Ð¾ÑладкÑ</A></TD> </TR> <TR> <TD><B><font color='#FFFFFF'>ÐоÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑÑаÑиÑÑика</FONT></B></TD> </TR> <TR> <TD> <a href="StreamingStatistics?1">ÐоÑок 1</A></TD> </TR> <TR> <TD> <a href="StreamingStatistics?2">ÐоÑок 2</A></TD> </TR> </TABLE> </TD> <td VALIGN=top><DIV ALIGN=center> <TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0"><TR> <TD><B>MAC-адÑеÑ</B></TD> <td width=20></TD><TD><B>442B031A8F7F</B></TD> </TR> <TR> <TD><B>ÐÐ¼Ñ Ñ Ð¾ÑÑа</B></TD> <td width=20></TD><TD><B>SEP442b031a8f7f</B></TD> </TR> <TR> <TD><B>ÐÐ¾Ð¼ÐµÑ ÑелеÑона 1</B></TD> <TD width=20></TD> <TD><B>60314</B></TD> </TR> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <TR> <TD><B> Ðод загÑÑженного пÑиложениÑ</B></TD> <td width=20></TD><TD><B>SCCP 9.4.1.3.SR3</B></TD> </TR><TR> <TD><B> Ðод загÑÑзки ÑиÑÑемÑ</B></TD> <td width=20></TD><TD><strong>0.0.0.14</strong></TD> </TR><TR> <TD><B> Ð*ÐµÐ²Ð¸Ð·Ð¸Ñ Ð°Ð¿Ð¿Ð°Ñ. oбеÑп.</B></TD> <td width=20></TD><TD><strong>5</strong></TD> </TR> <TR> <TD><B> СеÑийнÑй номеÑ</B></TD> <td width=20></TD><TD><strong>PXN16090HOX</strong></TD> </TR> <TR> <TD><B> ÐÐ¾Ð¼ÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸</B></TD> <td width=20></TD><TD><strong>CP-6921</strong></TD> </TR> <TR> <TD><B> СообÑение в ÑоÑÑ. ожиданиÑ</B></TD> <td width=20></TD><TD><strong>ÐеÑ</strong></TD> </TR> <TR> <TD><B>UDI</B></TD> <td width=20></TD> <TD><B>ТелеÑон</B></TD> </TR> <TR><TD> </TD> <td width=20></TD> <TD><strong>IP-ÑелеÑон Cisco CP-6921</strong></TD> </TR> <TR><TD> </TD> <td width=20></TD> <TD><strong>CP-6921</strong></TD> </TR> <TR> <TD> </TD> <TD width=20></TD> <TD><strong>PXN16090HOX</strong></TD> </TR> <TR> <TD> </TD> <TD width=20></TD> <TD><strong>74-6516-02 H0Rev= V02</strong></TD> </TR> <TR> <TD><B>ÐÑемÑ</B></TD> <td width=20></TD> <TD><strong>17:14</strong></TD> </TR> <TR> <TD><B>ЧаÑовой поÑÑ</B></TD> <td width=20></TD> <TD><strong>Etc/GMT-5</strong></TD> </TR> <TR> <TD><B>ÐаÑа</B></TD> <td width=20></TD> <TD><strong>19.04.20</strong></TD> </TR> <TR> <TD><B>ÐклÑÑен Ñежим FIPS</B></TD> <td width=20></TD> <TD><strong> ÐÐµÑ </strong></TD> </TR> </TABLE> </DIV></TD></TR></TABLE></BODY></HTML> <HTML> <HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8"/><TITLE>Cisco Systems, Inc.</TITLE> </HEAD> <BODY bgcolor="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" text="#003031"><TABLE BORDER="1" WIDTH="100%" HEIGHT="100%" CELLSPACING="0" CELLPADDING="0" bordercolor="#003031"><TR> <td WIDTH="200" HEIGHT="100" ALIGN=center><A HREF="http://www.cisco.com"><IMG SRC="cisco_Logo.gif" width="130" height="95"></A></TD><td HEIGHT="50" bgcolor="#003031"><p ALIGN=center><B><font color="#FFFFFF" size="6 ">ÐнÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑÑÑойÑÑве</FONT></B> <p ALIGN=center><B><font color="#FFFFFF" size="4">IP-ÑелеÑон Cisco CP-6921 (</FONT></B> <font color="#FFFFFF"><strong>SEP442b031a8f7f</strong> </font><B><font color="#FFFFFF" size="4">)</FONT></FONT></B></TD > </TR> <TR><td WIDTH="200" ALIGN=center VALIGN=top bgcolor="#003031"><TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0"> <TR> <TD><a href="/">ÐнÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑÑÑÑойÑÑве</a></TD> </TR> <TR> <TD><a href="NetworkConfiguration">ÐаÑÑÑойка ÑеÑи</a></TD> </TR> <!--<TR> <TD><a href="device.html">ÐаÑамеÑÑÑ ÑÑÑÑойÑÑва</a></TD> </TR> <TR> <TD><a href="security.html">ÐаÑÑÑойкa безопаÑноÑÑи</a></TD> </TR> <TR> <TD><a href="status.html">СоÑÑоÑние</a></TD> </TR>--> <TR> <TD><B><font color='#FFFFFF'>СÑаÑиÑÑика ÑеÑи</FONT></B></TD> </TR> <TR> <TD> <a href="EthernetInformation">ÐнÑоÑмаÑÐ¸Ñ Ð¾ Ethernet</A></TD> </TR> <TR> <TD> <a href="PortInformation?1">СеÑÑ</A></TD> </TR> <TR> <TD><B><font color='#FFFFFF'>ÐÑÑÐ½Ð°Ð»Ñ ÑÑÑÑ-ва</FONT></B></TD> </TR> <TR> <TD> <a href="console.html">ÐÑоÑоколÑ</A></TD> </TR> <TR> <TD> <a href="coredump.html">ÐÐ°Ð¼Ð¿Ñ ÑдÑа</A></TD> </TR> <TR> <TD> <a href="status.html">СообÑÐµÐ½Ð¸Ñ Ð¾ ÑоÑÑоÑнии</A></TD> </TR> <TR> <TD> <a href="debug.html"> ÐоказаÑÑ Ð¾ÑладкÑ</A></TD> </TR> <TR> <TD><B><font color='#FFFFFF'>ÐоÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑÑаÑиÑÑика</FONT></B></TD> </TR> <TR> <TD> <a href="StreamingStatistics?1">ÐоÑок 1</A></TD> </TR> <TR> <TD> <a href="StreamingStatistics?2">ÐоÑок 2</A></TD> </TR> </TABLE> </TD> <td VALIGN=top><DIV ALIGN=center> <TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0"><TR> <TD><B>MAC-адÑеÑ</B></TD> <td width=20></TD><TD><B>442B031A8F7F</B></TD> </TR> <TR> <TD><B>ÐÐ¼Ñ Ñ Ð¾ÑÑа</B></TD> <td width=20></TD><TD><B>SEP442b031a8f7f</B></TD> </TR> <TR> <TD><B>ÐÐ¾Ð¼ÐµÑ ÑелеÑона 1</B></TD> <TD width=20></TD> <TD><B>60314</B></TD> </TR> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <!-- --> <TR> <TD><B> Ðод загÑÑженного пÑиложениÑ</B></TD> <td width=20></TD><TD><B>SCCP 9.4.1.3.SR3</B></TD> </TR><TR> <TD><B> Ðод загÑÑзки ÑиÑÑемÑ</B></TD> <td width=20></TD><TD><strong>0.0.0.14</strong></TD> </TR><TR> <TD><B> Ð*ÐµÐ²Ð¸Ð·Ð¸Ñ Ð°Ð¿Ð¿Ð°Ñ. oбеÑп.</B></TD> <td width=20></TD><TD><strong>5</strong></TD> </TR> <TR> <TD><B> СеÑийнÑй номеÑ</B></TD> <td width=20></TD><TD><strong>PXN16090HOX</strong></TD> </TR> <TR> <TD><B> ÐÐ¾Ð¼ÐµÑ Ð¼Ð¾Ð´ÐµÐ»Ð¸</B></TD> <td width=20></TD><TD><strong>CP-6921</strong></TD> </TR> <TR> <TD><B> СообÑение в ÑоÑÑ. ожиданиÑ</B></TD> <td width=20></TD><TD><strong>ÐеÑ</strong></TD> </TR> <TR> <TD><B>UDI</B></TD> <td width=20></TD> <TD><B>ТелеÑон</B></TD> </TR> <TR><TD> </TD> <td width=20></TD> <TD><strong>IP-ÑелеÑон Cisco CP-6921</strong></TD> </TR> <TR><TD> </TD> <td width=20></TD> <TD><strong>CP-6921</strong></TD> </TR> <TR> <TD> </TD> <TD width=20></TD> <TD><strong>PXN16090HOX</strong></TD> </TR> <TR> <TD> </TD> <TD width=20></TD> <TD><strong>74-6516-02 H0Rev= V02</strong></TD> </TR> <TR> <TD><B>ÐÑемÑ</B></TD> <td width=20></TD> <TD><strong>17:14</strong></TD> </TR> <TR> <TD><B>ЧаÑовой поÑÑ</B></TD> <td width=20></TD> <TD><strong>Etc/GMT-5</strong></TD> </TR> <TR> <TD><B>ÐаÑа</B></TD> <td width=20></TD> <TD><strong>19.04.20</strong></TD> </TR> <TR> <TD><B>ÐклÑÑен Ñежим FIPS</B></TD> <td width=20></TD> <TD><strong> ÐÐµÑ </strong></TD> </TR> </TABLE> </DIV></TD></TR></TABLE></BODY></HTML> PS C:\WINDOWS\system32> |
Цитата:
В том скрипте не учитывается кодировка, там просто данные разрезаются и по индексу массива выдергиваются... а сами данные - не кириллица, поэтому кодировка неважна. В моем скрипте формируется массив кастомных объектов при разборе таблицы, а потом по содержимому элементов массива получаем индекс нужных данных и формируем новый массив. Поэтому кодировка важна. |
Я думаю вернусь когда буду читать морды мфу
|
Цитата:
ошибки
PS C:\Windows\system32> D:\1.ps1
Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "ihtmldocument2_write". D:\1.ps1:24 знак:30 + $html.ihtmldocument2_write(($h = irm $_)) + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (ihtmldocument2_write:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "ihtmldocument2_write". D:\1.ps1:27 знак:32 + $html.ihtmldocument2_write($(irm $_|convert $encode 28591)) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (ihtmldocument2_write:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Не удается индексировать в массив NULL. D:\1.ps1:30 знак:2 + $tbl = ($tables|?{($_.getelementsbytagname('table')|%{$_}).count ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Исключение при вызове "IndexOf" с "2" аргументами: "Значение не может быть неопределенным. Имя параметра: array" D:\1.ps1:82 знак:2 + [pscustomobject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "ihtmldocument2_write". D:\1.ps1:24 знак:30 + $html.ihtmldocument2_write(($h = irm $_)) + ~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (ihtmldocument2_write:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Сбой вызова метода из-за отсутствия в [System.__ComObject] метода с именем "ihtmldocument2_write". D:\1.ps1:27 знак:32 + $html.ihtmldocument2_write($(irm $_|convert $encode 28591)) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (ihtmldocument2_write:String) [], RuntimeException + FullyQualifiedErrorId : MethodNotFound Не удается индексировать в массив NULL. D:\1.ps1:30 знак:2 + $tbl = ($tables|?{($_.getelementsbytagname('table')|%{$_}).count ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : NullArray Исключение при вызове "IndexOf" с "2" аргументами: "Значение не может быть неопределенным. Имя параметра: array" D:\1.ps1:82 знак:2 + [pscustomobject]@{ + ~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentNullException |
В данный момент ip адрес запроса это результат
Код:
[array]$arr = $((Get-Netipaddress |? ipaddress -match "^10\.").ipaddress -replace "\d+$") Например в файле Код:
10.80.1. |
Цитата:
Командлет Invoke-WebRequest и Invoke-RestMethod добавлены в powershell v 3.0, а методы парсеров html, возможно и в более поздние версии... В общем, имеет смысл обновить powershell до актуальной версии... Да, есть нюанс: если на машине нет Internet Explorer-а, то командлеты эти использовать не получится... они тесно связаны с ним. Ещё один нюанс: если используется powershell core, т.е. версия новее 5.1, то методы парсинга html через IE, в них уже вырезаны, там придется использовать внешние парсеры типа PowerHTML, в которых уже используется парсинг по типу XML (XPATH и т.п.)... но это уже будет совсем другой скрипт. |
Цитата:
Код:
Major Minor Build Revision |
Цитата:
Код:
[array]$arr = gc 'list_Net.txt' Цитата:
|
Цитата:
|
Цитата:
От админа или от пользователя - без разницы. Попробую сейчас немного переделать скрипт под другой метод... |
Кстати на моем пк, на других моделях айпишек скрипт отработал корректно! :up
Тогда непонятно почему на других пк не работает. Пошик не не старый, ie есть. :dont-know |
Цитата:
Вот переделанный скрипт: script.ps1
Код:
param ( - но тормоз получился изрядный... |
Цитата:
Это полное решение. Работает на 4 видах айпишек. придется из батника запускать так как на компах не включено исполнение ps скриптов. типа команда Set-ExecutionPolicy RemoteSigned и потом запуск скрипта. Есть ли варианты включить эту команду в сам скрипт, чтобы не городить батников? |
Цитата:
Батник: Код:
powershell -ex bypass .\script.ps1 |
Цитата:
Код:
@echo off |
Цитата:
Но, имхо, это излишне, если, конечно, эта переменная не подвергалась ручным изменениям... |
Интересно есть ли ограничение по объему входных данных. Я скормил ему файлик с 700 подсетями, уже скоро как сутки чем то занят, не прерываю вдруг закончит все же.
|
Цитата:
Цитата:
Можно, конечно, было бы и прогрессбар прикрутить, но это только добавит "тормозов" Чтобы проще было наблюдать, можно организовать вывод каждого IP в отдельный файл... |
Цитата:
Цитата:
YuS_2, помогите пожалуйста собрать теперь этого Франкенштейна |
Цитата:
|
Цитата:
|
Про GLPI слышали или вообще про инвентаризационный софт?
|
Цитата:
Вот, скрипт на его основе: script.ps1
Код:
param ( Плюсы: Работает гораздо быстрее предыдущих вариантов парсинга через IE Парсер не зависит от наличия IE в системе. Может работать на версиях Powershell Core, где встроенный парсер HTML, связанный с IE, был вырезан, т.е. работает на самых свежих версиях powershell Core... Таблицу разбирает, также с учетом rowspan и colspan Минусы: Зависимость от dom-структуры, всё также, присутствует... Возможно, что-то не учтено (собирал по-быстрому), но проверен на тех страницах, которые здесь были показаны... |
Цитата:
|
Цитата:
Скрытый текст
Код:
PS D:\Users\S> param ( На рабочем пк другой результат выполнения скрипта, на рабочем пк нет внешнего интернета и powerhtml пришлось сложить в папку с модулями руками, перед выполнением скрипта выполняю импорт powerhtml, но я так понимаю не помогает. Скрытый текст
Код:
PS C:\WINDOWS\system32> Import-Module PowerHTML |
Цитата:
Цитата:
и здесь: Цитата:
там куча таких огрехов... Используйте исходный скрипт, или проверяйте после копирования/редактирования... |
Цитата:
Скрытый текст
IP MAC-адрес Номер телефона Серийный номер Номер модели
10.81.1.134 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.137 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.139 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.140 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.141 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.143 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.144 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.145 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.146 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.147 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.148 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.149 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.150 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.151 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.152 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.155 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.157 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.160 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.163 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.165 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.166 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.167 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.169 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.170 00778DF9B400 60158 WZP230901Q0 CP-7821 10.81.1.172 00778DF9B400 60158 WZP230901Q0 CP-7821 Скрытый текст
PS C:\WINDOWS\system32> D:\PowerShell\phone4.ps1
iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand iwr : Невозможно соединиться с удаленным сервером D:\PowerShell\phone4.ps1:23 знак:10 + $html = iwr $_ + ~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand |
Приведите в порядок код и всё заработает... :)
|
Цитата:
код
Код:
param ( Результат выполнения кода
Код:
10.81.1.134 00778DF88C94 60025 WZP23060APA CP-7821 ошибки, которые выдал, когда нет айпишек.
Код:
iwr : Невозможно соединиться с удаленным сервером |
Цитата:
Цитата:
Хотя, конечно, есть вероятность того, что пока пингуется весь список по порядку, какой-либо хост отключается и соответственно, происходит именно то, что Вы описываете. Бороться с этим можно так: script.ps1
Код:
param ( Но рекомендую довести до ума парсер с PowerHTML, это будет лучший вариант... |
Цитата:
Windows они пропустили, циско и т. п., а GLPI - это нельзя. Смешно. |
Цитата:
Скрипт
Код:
param ( ошибки
Код:
new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загружена. Цитата:
Цитата:
|
Цитата:
![]() работать не будет... Необходимо модуль установить... |
Цитата:
|
Скрытый текст
Код:
PS C:\WINDOWS\system32> get-module powerhtml Скрытый текст
Код:
new-object : Не удается найти тип [HtmlAgilityPack.HtmlDocument]: убедитесь в том, что сборка, содержащая этот тип, загружена. |
Цитата:
Цитата:
Код:
find-module powerhtml -rep "PSGallery"|save-module -path 'D:\localMODULE' Ну, можно ещё попробовать в скрипт добавить строку: Код:
import-module powerhtml Цитата:
По умолчанию, политика запуска скриптов запрещает не подписанные. Цитата:
|
Цитата:
Цитата:
|
Получился довольно универсальный в теме айпишек скрипт, не скрипт, а проект уже целый. Я благодарен участникам данного форума, что помогли решить задачу именно строенными средствами винды. :clapping: :up
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Мало того, что впихнули внутрь ячеек тег <b>...</b>, так ещё и кодировку умудрились использовать windows-1251... В общем, так как-то: script_phtml.ps1
Код:
param ( |
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Скрытый текст
Код:
param ( Может пошик умеет пинговать многопоточно? а то получается большой объем когда скрипту даешь, то это надолго и непонятно когда он закончит, потому что из списка подсетей пингует не по порядку как в файле, а в каком-то своем порядке, а так было бы понятно по результату хотя бы. скормил скрипту 2500 подсетей, уже неделю файл заполняет, но заполняет :) |
Цитата:
Кстати, код я немного изменил, в этой части: Скрытый текст
Код:
$ips|%{ - возможно, скорости не прибавит, но так будет правильнее... Цитата:
можно попробовать использовать workflow с конструкцией foreach -parallel (...){...}, примерно так: Код:
ForEach -Parallel ($<item> in $<collection>) В общем, простор для творчества есть... |
Цитата:
Код:
ForEach-Object -Parallel |
Цитата:
|
Foreigner, а реально там как — хост пользует несколько ядер единовременно?
|
Цитата:
Например простой перебор чисел 0..1000 значительно медленнее обычного foreach. |
Foreigner, Iska,
Цитата:
|
YuS_2, спасибо, ясно. Ответ — да:
Цитата:
|
Цитата:
Сейчас гляну смогу ли поднять на рабочей тачке пошик 7. поставил, готов к тестам. Скрытый текст
Код:
PowerShell 7.0.0 Я так понимаю надо будет указывать количество ядер или автоматически выставится? а так 4 ядра (i5-4590s). |
Цитата:
Скрытый текст
Код:
... - пинги будут выполняться чуть быстрее за счет -timeout 1 Количество одновременно выполняющихся сценариев, регулируйте параметром -throttlelimit 5 |
Цитата:
Код:
# pwsh $OutputEncoding |
Цитата:
По рукам бы надавать за такую вот "совместимость", этим индусам... :) |
Цитата:
Скрытый текст
Код:
param ( Скрытый текст
Код:
PS C:\Windows\System32> D:\PowerShell\готовые\phone_p7.ps1 похоже надо доустановить, щас решу отпишусь. |
Ни на одном компе не работает.
|
Цитата:
Код:
[net.servicepointmanager]::securityprotocol = 'ssl3,tls,tls11,tls12' Код:
$using:number |
Цитата:
Про строку 28 уже написали... А по поводу $using:number - ранее, переменная определялась внутри цикла foreach-object (что неправильно), а теперь я вынес её за пределы цикла. В общем, надо добавить перед циклом: Код:
... |
Цитата:
Скрытый текст
Код:
param ( Скрытый текст
Код:
PS C:\Windows\System32> D:\PowerShell\готовые\phone_p7.ps1 названия столбиков
Код:
IP MAC-адрес Номер телефона Серийный номер Номер модели Да быстрее кстати, но жаль ограничено количеством ядер. |
скормил файлик с подсетями побольше
Скрытый текст
Код:
PS C:\Windows\System32> D:\PowerShell\готовые\phone_p7.ps1 Видимо 7 пошик и ошибки пишет другие |
Цитата:
Цитата:
Код:
[text.encoding]::getencodings() Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Код:
[net.servicepointmanager]::securityprotocol = 0 |
Цитата:
Цитата:
Цитата:
|
Цитата:
Скрытый текст
Код:
Ошибка: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. Цитата:
|
Цитата:
Код:
... Код:
... Цитата:
|
Цитата:
|
Цитата:
Код:
test-connection XXX.XXX.XXX.159 -count 1 -q -timeout 1 |
Цитата:
они не на каждой подсети появляются, редко, но работает ведь, а на ругань можно не обращать внимания. На этих айпишниках точно ничего нет. |
Цитата:
|
Цитата:
|
250 подсетей скрипт отработал на 100 потоков, а вот 2500 уже не хватает памяти хоть на скольких потоков.
|
Griboed0ff, это утечка памяти... видимо из-за runspace -ов. Ничего не поделаешь, только ждать исправлений...
|
Цитата:
|
нормально обрабатывает список по 50 строк, больше начинаются приколы.
|
Цитата:
|
Цитата:
Код:
10.10.10. |
Цитата:
Код:
PS > get-content file.txt -readcount 50 | foreach -parallel { script.ps1 $_ } -throttlelimit $(сколько потоков) Код:
PS > get-content file.txt -readcount 50 | foreach { script.ps1 $_ } |
Цитата:
Скрытый текст
Код:
param ( Скрытый текст
Код:
get-content D:\PowerShell\готовые\ip1.txt -readcount 50 | foreach -parallel { D:\PowerShell\готовые\phone_p7.ps1 $_ } -throttlelimit $(1000) Скрытый текст
Код:
Export-Csv: D:\PowerShell\готовые\phone_p7.ps1:134 |
Так, сразу и не разберешься. Применительно к скрипту, надо как-то менять саму конструкцию. Попробуйте заменить:
Код:
$ips|% -parallel {..... Код:
$x = 0 Проверить, понятное дело, не могу. И мне кажется, что лучше выбрать throttellimit другим, 1000, имхо, большой перебор. сколько ядер, умноженное на кол-во потоков одного ядра. Ошибся: Код:
for ($i =20;.... |
Цитата:
|
Цитата:
Цитата:
Griboed0ff, В скрипте, который Вы показываете: Цитата:
Цитата:
Так ресурсы, Вы не сэкономите... скушает скрипт их легко и быстро. :) |
Цитата:
Скрытый текст
Код:
param ( |
Доброго всем времени суток. Прошлый скрипт работает отлично и уже собрал ~4000 аппаратов, его я запускаю со своего пк когда собираю инфу. Есть и другая версия скрипта, которая запускается на машинах локально.Столкнулся с проблемой парсера, а именно проблемы с ie, на тех пк, на которых ie никогда не открывались, не пройдена первоначальная настройка, естественно парсер говорит об этом. Если зайти в ie и согласится с настройками то скрипт отрабатывает корректно. Есть ли какая-нибудь команда, чтобы запустить парсер без первоначальной настройки?
скрипт
Код:
param ( |
Цитата:
Цитата:
|
Цитата:
скорее всего это будет подмена ветки реестра, пока все мысли на это указывают |
Цитата:
|
Цитата:
Скрытый текст
Код:
PS D:\local> D:\local\localphone.ps1 |
Время: 10:28. |
Время: 10:28.
© OSzone.net 2001-