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

Аватара пользователя
greg zakharov

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение greg zakharov »

Цитата greg zakharov:



Вы не можете ему просто так взять и скормить IP-адрес в обход DNS
PowerShell - [решено] Вывод ip вместе с заголовком




почему? а как же параметр --url ?

цитата из справки:

"Задаёт url. Параметр полезен для указания адресов URL в файле конфигурации. Для контроля куда файл будет записан используйте параметры -o, --output или -O, --remote-name.

Параметр можно использовать любое количество раз.
"
Аватара пользователя
greg zakharov

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение greg zakharov »

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

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение Vadikan »

Цитата Freddy1984:



в файле in.txt имеется:
PowerShell - [решено] Вывод ip вместе с заголовком




Т.е. вы фактически хотите загонять $LINK в out.txt? Тогда так



Код:

Код: Выделить всё

ForEach ($LINK in Get-Content in.txt)
{$LINK >> out.txt
&".\curl.exe" --head --get $LINK >>out.txt}

Или здесь никто не понимает, чего вы хотите :)
Аватара пользователя
Freddy1984

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение Freddy1984 »

Цитата greg zakharov:



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




простите, я это хорошо знаю, но вы явно не знаете что в контексте работы curl, данный параметр (--url) подходит как для работы с урлами, так и с сетевыми ip адресами.

но это мы уже совсем далеко от темы ушли...

я знаю как на cmd реализовать построчное чтение из файла ip адресов с помощью curl (и там как раз без --url не обойтись) и запись заголовков с ip адресом в файл, но с PowerShell у меня большие недопонимания, от того и задал тут вопрос.




Цитата Vadikan:



Т.е. вы фактически хотите загонять $LINK в out.txt? Тогда так
PowerShell - [решено] Вывод ip вместе с заголовком




да, как я писал уточнения ещё на второй странице - пустые пропускать.

По вашему коду всё почти правильно работает, только кроме рабочих, в файл дописывает ещё и не рабочие.




Цитата Vadikan:



Или здесь никто не понимает, чего вы хотите Изображение
PowerShell - [решено] Вывод ip вместе с заголовком




я же на 2-й странице сделал довольно развёрнутое уточнение, там же всё понятно и наглядно с примерами Изображение
Аватара пользователя
Vadikan

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение Vadikan »

Модераториал


Цитата Freddy1984:



да, как я писал уточнения ещё на второй странице - пустые пропускать.
PowerShell - [решено] Вывод ip вместе с заголовком





Цитата Freddy1984:



я же на 2-й странице сделал довольно развёрнутое уточнение
PowerShell - [решено] Вывод ip вместе с заголовком




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

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение Freddy1984 »

Цитата Vadikan:



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




намёк однозначен Изображение))

Ок
Аватара пользователя
YuS_2

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение YuS_2 »

Цитата Freddy1984:



в файле in.txt имеется список ip. для примера:
PowerShell - [решено] Вывод ip вместе с заголовком




Ну, списка, положим, тут нет, а есть только один IP адрес с указанным портом...

Для тестирования необходимо было бы указать пару существующих и пару несуществующих.




Цитата Freddy1984:



в файл out.txt должно выводится:

(соответственно пустые ip адреса - пропускать)
PowerShell - [решено] Вывод ip вместе с заголовком




Т.е. не существующие IP? "Пустые" - не совсем понятно.




Цитата Freddy1984:



После запуска скрипта почему то идёт пауза в 30 сек. перед прогоном по списку.
PowerShell - [решено] Вывод ip вместе с заголовком




а поместите в список первым адресом проверенный, т.е. тот который действительно существует...



А так, учитывая всё вышенаписанное, попробуйте так:



Код:

Код: Выделить всё

$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
	}
}
Аватара пользователя
Freddy1984

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение Freddy1984 »

Цитата YuS_2:



Т.е. не существующие IP? "Пустые" - не совсем понятно.
PowerShell - [решено] Вывод 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.AbsoluteURI; jobstatus =$r.Status; success = !$r.IsFaulted} 
         # if you need response text use $r.Result
       }
     $results.Clear()
   }

$i+=1

} 



Аватара пользователя
YuS_2

Re: PowerShell - [решено] Вывод ip вместе с заголовком

Сообщение YuS_2 »

Цитата Freddy1984:



так как на обработку каждой строки уходит 3 сек.
PowerShell - [решено] Вывод ip вместе с заголовком




не так...

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




Цитата Freddy1984:



Можно попросить вас посмотреть, возможно ли асинхронный метод совместить с вашим кодом?
PowerShell - [решено] Вывод ip вместе с заголовком




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

В общем, попробуйте, конечно, если есть желание...
Ответить

Вернуться в «Скриптовые языки администрирования Windows»