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

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

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

Аватара для Freddy1984

Пользователь


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

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


Изменения
Автор: 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

 

Аватара для Freddy1984

Пользователь


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

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


Цитата greg zakharov:
Вы не можете ему просто так взять и скормить IP-адрес в обход DNS »
почему? а как же параметр --url ?
цитата из справки:
"Задаёт url. Параметр полезен для указания адресов URL в файле конфигурации. Для контроля куда файл будет записан используйте параметры -o, --output или -O, --remote-name.
Параметр можно использовать любое количество раз.
"

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



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

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


Ветеран


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

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


Freddy1984, а вам не кажется, что URL и IP суть разные вещи? Читайте по буквам: URL - унифицированный локатор ресурса, IP - сетевой адрес узла. Вы где-нибудь видели в справке curl параметр --ip?

Отправлено: 21:44, 12-08-2019 | #22


(*.*)


Administrator


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

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


Цитата Freddy1984:
в файле in.txt имеется: »
Т.е. вы фактически хотите загонять $LINK в out.txt? Тогда так
Код: Выделить весь код
ForEach ($LINK in Get-Content in.txt)
{$LINK >> out.txt
&".\curl.exe" --head --get $LINK >>out.txt}
Или здесь никто не понимает, чего вы хотите :)

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

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

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


Аватара для Freddy1984

Пользователь


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

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


Цитата greg zakharov:
а вам не кажется, что URL и IP суть разные вещи? Читайте по буквам: URL - унифицированный локатор ресурса, IP - сетевой адрес узла. Вы где-нибудь видели в справке curl параметр --ip »
простите, я это хорошо знаю, но вы явно не знаете что в контексте работы curl, данный параметр (--url) подходит как для работы с урлами, так и с сетевыми ip адресами.
но это мы уже совсем далеко от темы ушли...
я знаю как на cmd реализовать построчное чтение из файла ip адресов с помощью curl (и там как раз без --url не обойтись) и запись заголовков с ip адресом в файл, но с PowerShell у меня большие недопонимания, от того и задал тут вопрос.

Цитата Vadikan:
Т.е. вы фактически хотите загонять $LINK в out.txt? Тогда так »
да, как я писал уточнения ещё на второй странице - пустые пропускать.
По вашему коду всё почти правильно работает, только кроме рабочих, в файл дописывает ещё и не рабочие.

Цитата Vadikan:
Или здесь никто не понимает, чего вы хотите »
я же на 2-й странице сделал довольно развёрнутое уточнение, там же всё понятно и наглядно с примерами

Отправлено: 21:56, 12-08-2019 | #24


(*.*)


Administrator


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

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


Модераториал
Цитата Freddy1984:
да, как я писал уточнения ещё на второй странице - пустые пропускать. »
Цитата Freddy1984:
я же на 2-й странице сделал довольно развёрнутое уточнение »
Я вам как администратор конференции скажу. В этой теме 25 постов без решения не потому что отвечающие не обладают достаточной квалификацией. А потому что ТС не может внятно изложить свою задачу и исходные условия. И даже после того как из него вытагивают их по крупицам клещами, ему в голову не приходит заносить все подробности в первый пост.

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

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

Отправлено: 22:43, 12-08-2019 | #25


Аватара для Freddy1984

Пользователь


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

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


Цитата Vadikan:
все подробности в первый пост. »
намёк однозначен ))
Ок

Отправлено: 22:52, 12-08-2019 | #26


Аватара для YuS_2

Старожил


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

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


Цитата Freddy1984:
в файле in.txt имеется список ip. для примера: »
Ну, списка, положим, тут нет, а есть только один IP адрес с указанным портом...
Для тестирования необходимо было бы указать пару существующих и пару несуществующих.

Цитата Freddy1984:
в файл out.txt должно выводится:
(соответственно пустые ip адреса - пропускать) »
Т.е. не существующие IP? "Пустые" - не совсем понятно.

Цитата Freddy1984:
После запуска скрипта почему то идёт пауза в 30 сек. перед прогоном по списку. »
а поместите в список первым адресом проверенный, т.е. тот который действительно существует...

А так, учитывая всё вышенаписанное, попробуйте так:
Код: Выделить весь код
$fin = 'in.txt'
$fout = 'out.txt'

gc $fin -enc utf8|%{
	$tmp = $(curl.exe -Im 3 "$_")
	if ($tmp -match 'http'){
		$_,$tmp|out-file $fout -enc utf8 -app
	}
}

-------
scio me nihil scire

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

Отправлено: 08:43, 13-08-2019 | #27


Аватара для Freddy1984

Пользователь


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

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


Цитата YuS_2:
Т.е. не существующие IP? "Пустые" - не совсем понятно. »
да, те адреса, которые не отдают заголовки (или вообще не рабочие), пропускать и не записывать в out.txt
Отрабатывает прекрасно! Громадный респект Вам!!

Можно ещё тогда вопрос?
так как на обработку каждой строки уходит 3 сек. (да, можно регулировать, понимаю), то прогон достаточно увесистого списока может занять приличное время. Я тут гуглил, и наткнулся на некий асинхронный метод прогона (я так понял это многопоточный, или многопроцессный режим).
Можно попросить вас посмотреть, возможно ли асинхронный метод совместить с вашим кодом?
Пример:
PHP код: Выделить весь код

$urllist 1..97
$batchSize 
20

$results 
= [System.Collections.ArrayList]::new()

$i 1
foreach($url in $urllist) {

  
$w = [System.Net.Webclient]::new().DownloadStringTaskAsync("http://www.example.com?q=$i")
  
$results.Add($w) | Out-Null

  
if($i $batchSize -eq 0 -or $i -eq $urllist.Count) {
      While(
$false -in $results.IsCompleted) {sleep -Milliseconds 300# waiting for batch to complete
       
Write-Host " ........   Batch completed   ......... $i" -ForegroundColor Green
       
foreach($r in $results) { 
         New-
Object PSObject -Property @{url $r.AsyncState.AbsoluteURIjobstatus =$r.Statussuccess = !$r.IsFaulted
         
# if you need response text use $r.Result
       
}
     
$results.Clear()
   }

$i+=1




Отправлено: 09:08, 13-08-2019 | #28


Аватара для YuS_2

Старожил


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

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


Цитата Freddy1984:
так как на обработку каждой строки уходит 3 сек. »
не так...
3 сек. - максимально допустимое время передачи. Это время ожидания ответа, другими словами. Если он придет быстрее, то и ожидания не будет.

Цитата Freddy1984:
Можно попросить вас посмотреть, возможно ли асинхронный метод совместить с вашим кодом? »
Вряд ли это будет работать с IP адресами, потребуются дополнительные преобразования. Кроме того, вроде бы, этот метод загружает всю страницу, а не только заголовки и в конечном итоге, думаю, что выигрыш во времени будет совсем небольшой. Да и конечный результат будет получен только при получении всех ответов или неответов со сбросом по таймеру...
В общем, попробуйте, конечно, если есть желание...

-------
scio me nihil scire

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

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



Компьютерный форум 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




 
Переход