Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - вытянуть информацию из html полученного через curl

Ответить
Настройки темы
PowerShell - вытянуть информацию из html полученного через curl

Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


Изменения
Автор: Griboed0ff
Дата: 17-09-2021
Доброго всем времени суток. Есть задача, которую надо решить именно через bat. Через curl скачивается страничка и из нее нужно извлечь нужную информацию, на скрине отмечено, что нужно вытянуть мак-адрес, номер телефона, модель и серийный номер. На данный момент батник уже может: узнает какая подсеть на компе, потом сканит диапазон из этой подсети, потом curl скачивает странички с айпишки с данными. А вот далее нужно, чтобы батник мог как-то вытянуть данные со странички и плюс как-то мог сам подставить все странички, которые есть в папке.

Отправлено: 08:26, 16-04-2020

 

Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


@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

в общем батник для сбора информации о телефонах в подсети, в которой находится пк. У телефонов только есть веб морда, с которой есть нужная инфа.

Отправлено: 08:27, 16-04-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Цитата Griboed0ff:
именно через bat »
Powershell не используется из принципа?

Код: Выделить весь код
$html = (gc "D:\temp\10.83.3.150.html.txt" -encoding utf8) -replace "<.*?>",";" -split ';+ ' -replace "^.*;"

$obj = [pscustomobject]@{'MAC-адрес'= $html[-18]
           'Номер телефона'= $html[-16]
           'Серийный номер'= $html[-11]
           'Номер модели'= $html[-10]
          }

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Последний раз редактировалось DJ Mogarych, 16-04-2020 в 09:21.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:57, 16-04-2020 | #3


Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Powershell не используется из принципа? »
Я ни разу не пользовался, если использовать Powershell, то надо переписывать и весь остальной батник, либо как-то запускать данный скрипт из батника.

Отправлено: 09:37, 16-04-2020 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Вряд ли переписать будет сложно.
В Powershell есть команда curl, это не точная копия, но, полагаю, с вашей задачей справится.

На мой взгляд, это гораздо понятнее батников с их нагромождением костылей и спецсимволов. К тому же, в PS мы имеем дело с объектами, а не с текстом.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:17, 16-04-2020 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Griboed0ff, переписывайте.

Отправлено: 10:17, 16-04-2020 | #6


Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


Пробовал запустить отрабатывает без ошибок, но где результат посмотреть или записать его в файл?!

Цитата DJ Mogarych:
Вряд ли переписать будет сложно. »
Я сегодня первый раз запустил ps1 скрипт, я вообще ничего не знаю про него и не могу даже вывод скрипта вашего увидеть. Что-то написать сейчас это за гранью фантастики.

Отправлено: 10:17, 16-04-2020 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Я поместил результат в переменную $obj.
Чтобы вывести её содержимое, нужно написать $obj после скрипта.

Самый наглядный метод - выполнять скрипт из Powershell ISE (см. в меню Пуск). Там есть кнопочка "плей", как на магнитофоне.

Вам файл в каком виде нужен?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:22, 16-04-2020 | #8


Старожил


Сообщения: 211
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Я поместил результат в переменную $obj.
Чтобы вывести её содержимое, нужно написать $obj после скрипта. »
спасибо получилось, это просто превосходно по сравнению с батником.
Тогда помогите пожалуйста с остальным: задача снять данные с веб морд айпишек в диапазоне *.*.*.130-*.*.*.190, в подсети где находится комп на котором запускается, сложить это все в .csv или txt

curl на компах не установлен, я просто ложил рядом с батником и указывал в батнике путь к нему. Можно ли в Powershell только встроенными средствами?

Отправлено: 10:27, 16-04-2020 | #9


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Если вы в Powershell выполните что-то типа
Код: Выделить весь код
(curl "https://192.168.0.130/CGI/Java/Serviceability?adapter=device.statistics.device").rawcontent
(подставьте правильный ip), это будет тот самый html?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:36, 16-04-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - вытянуть информацию из html полученного через curl

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Как получить информацию, не отображаемую в HTML-коде? Apock Вебмастеру 0 26-12-2015 22:11
Имитация браузера через cURL dmit.medv Вебмастеру 0 28-12-2012 18:02
[решено] Вывести информацию из файла через JS MultiMax Вебмастеру 1 31-05-2011 22:58
[решено] Вытянуть содержание HTML тега с помощью регулярных выражений aesir AutoIt 4 28-08-2009 21:22
Как передать в javascript данные массива, полученного из кода на php vagner_HATE Вебмастеру 1 18-06-2009 13:51




 
Переход