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

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

Ответить
Настройки темы
PowerShell - [решено] Вывод ip вместе с заголовком

Аватара для Freddy1984

Старожил


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

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


Изменения
Автор: Freddy1984
Дата: 12-08-2019
Здравствуйте.
Подскажите пожалуйста как вместе с заголовком ответа от сервера ещё и ip дописать?
В таком виде в файл записывает только ответ без ip адреса:
Код: Выделить весь код
ForEach ($LINK in Get-Content in.txt)
{&".\curl.exe" --head $LINK >>out.txt}
Подробности:
в файле in.txt имеется список ip. для примера:
PHP код: Выделить весь код

185.5.97.86:8001 


в файл out.txt должно выводится:
(соответственно пустые ip адреса - пропускать)

PHP код: Выделить весь код

185.5.97.86:8001

HTTP
/1.1 404 Not Found
Server
Astra Relay
Content
-Typetext/html
Content
-Length124 

в данный момент по тому коду что я описал, в файл out.txt выводится:

PHP код: Выделить весь код

HTTP/1.1 404 Not Found
Server
Astra Relay
Content
-Typetext/html
Content
-Length124 

И второй момент. После запуска скрипта почему то идёт пауза в 30 сек. перед прогоном по списку. Для чего эта пауза если я её явно не прописывал?
Спасибо.

Отправлено: 14:13, 12-08-2019

 

Ветеран


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

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


для этой опреации в PoSh существует командлет Invoke-WebRequest
AFAIK сначала резолвить, а после реквестить

Отправлено: 15:42, 12-08-2019 | #2



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

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


Аватара для Freddy1984

Старожил


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

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


Цитата Busla:
для этой опреации в PoSh существует командлет Invoke-WebReq »
да, но Invoke-WebRequest отрабатывает очень поверхностно, многих типов серверов заголовки вообще не считывает. Это я пробовал, тестировал. Пример: (Invoke-WebRequest -Method Get -Uri $url).Headers.Server|Out-File -encoding default out.txt
поэтому я и взял за основу curl.exe , он отрабатывает на ура.
Единственное что не хватает в коде, это дописывать ip из списка. Как прикрутить ума не приложу..

Отправлено: 16:00, 12-08-2019 | #3


Аватара для Elven

Ветеран


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

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


Busla, если моя память не спит с другим - правильно, ни curl ни Invoke-Webrequest не умеет IP возвращать адекватно, хотя для curl есть ключи -4 и -6 отвечающие за ipv4 и ipv6 соответственно.
Freddy1984, так написано же уже - сначала резолвить (например Resolve-DnsName) а потом уже реквестить.

Отправлено: 16:04, 12-08-2019 | #4


Аватара для Xaegr

Сотрудник Microsoft


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

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


PHP код: Выделить весь код

$urlsfile "in.txt"
$outfile "out.txt"
foreach ($url in (get-content $urlsfile))
{
# Получаем урл
$Data Invoke-WebRequest $url
# Резолвим IP из имени хоста полученного в веб-запросе (сам веб-запрос IP не резолвит, он ему не нужен)
$DNSResponse $data.BaseResponse.ResponseUri.Host Resolve-DnsName
#Дописываем IP в файл
$DNSResponse.IPAddress add-content $outfile
#Заголовки в dictonary (hash) поэтому для вывода их в текстовый файл, сначала преобразовываем в plain text (хотя лучше конечно было бы выводить в json например).
$data.Headers Out-String -Width 1mb add-content $outfile


Цитата Freddy1984:
И второй момент. После запуска скрипта почему то идёт пауза в 30 сек. перед прогоном по списку. Для чего эта пауза если я её явно не прописывал?
Спасибо. »
Это либо curl.exe (уж не знаю зачем), либо чтение файла с урлами в память и преобразование в массив (это делает get-content автоматом) занимает столько времени (это конечно должен быть весьма большой файл). В принципе читать его в память сразу весь не обязательно, как и преобразовывать в массив. Но это уже man get-content
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:08, 12-08-2019 | #5


Аватара для Freddy1984

Старожил


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

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


Xaegr,
Я вас благодарю, но по вашему примеру в консольном окне почему то выводит: Invoke-WebRequest : Not Found

Цитата Xaegr:
это конечно должен быть весьма большой файл »
как ни странно, но количество урлов в файле не влияет на таймаут. В любом случае отсчитывается 30 сек. Очень странно.

Цитата Xaegr:
В принципе читать его в память сразу весь не обязательно, как и преобразовывать в массив. Но это уже man get-conten »
можно подробнее?? не понял про man get-conten...

Отправлено: 16:15, 12-08-2019 | #6


Аватара для Xaegr

Сотрудник Microsoft


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

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


Цитата Freddy1984:
но по вашему примеру в консольном окне почему то выводит: Invoke-WebRequest : Not Found »
Очень странно. А какая версия PowerShell? Не 1.0 ли? Что выводит
$psversiontable
?
И вообще, покажите ошибку то.

Отправлено: 16:23, 12-08-2019 | #7


(*.*)


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

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


Freddy1984, установите WMF 5.1 https://www.microsoft.com/en-us/down....aspx?id=54616 и у вас много чего появится, не только invoke-webrequest

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 16:28, 12-08-2019 | #8


Аватара для Freddy1984

Старожил


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

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


Цитата Xaegr:
А какая версия PowerShell? Не 1.0 ли? »
не, на винде 10-ке последняя.

Цитата Xaegr:
И вообще, покажите ошибку то. »
Эта ошибка в следствии того, что Invoke-WebRequest к сожалению далеко не все типы серваков переваривает, о чем я написал выше..
Вот эта ошибка на рабочий сервер, который curl переваривает правильно:
Код: Выделить весь код
Invoke-WebRequest : Невозможно соединиться с удаленным сервером
5 знак:9
+ $Data = Invoke-WebRequest $url
+         ~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Resolve-DnsName : Не удается проверить аргумент для параметра "Name". Аргумент пустой или имеет значение NULL. Укажите
непустой аргумент, не имеющий значение NULL, после чего повторите выполнение команды.
6 знак:54
+ $DNSResponse = $data.BaseResponse.ResponseUri.Host | Resolve-DnsName
+                                                      ~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Resolve-DnsName], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.DnsClient.Commands.ResolveDnsName
Цитата Vadikan:
установите WMF 5.1 https://www.microsoft.com/en-us/down....aspx?id=54616 и у вас много чего появится, не только invoke-webrequest »
Простите, но у меня винда 10-ка.

Отправлено: 16:30, 12-08-2019 | #9


Аватара для Xaegr

Сотрудник Microsoft


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

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


Цитата Freddy1984:
Invoke-WebRequest к сожалению далеко не все типы серваков переваривает, о чем я написал выше »
До сих пор не увидел примера.
Цитата Freddy1984:
Вот эта ошибка на рабочий сервер »
Пример url можно? Тут про "Invoke-WebRequest : Not Found" ничего нет.

Отправлено: 16:37, 12-08-2019 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
DLE Вывод заголовков новостей в одной колонке и вывод полной новости на своей страниц AKBAHABT Вебмастеру 0 21-04-2014 17:51
CMD/BAT - [решено] Переименование файлов в соотвествии с их заголовком daniil1018 Скриптовые языки администрирования Windows 6 05-04-2014 21:37
Интерфейс - Вывод вместе с временем вашего сообщения в трее ~GlukoZz~ Microsoft Windows Vista 9 18-11-2008 11:03
Собираем Вместе.. ! Disconnect Выбор отдельных компонентов компьютера и конфигурации в целом 11 19-11-2005 01:23




 
Переход