PDA

Показать полную графическую версию : ограничить выполнение задачи по времени


Griboed0ff
16-10-2020, 12:46
Всем доброго времени суток, ранее на этом форуме, люди мне помогли с написанием скрипта, а точнее полностью написали его.
Скрипт парсер веб морд айпишек, берет диапазоны ip (больше 2000 диапазонов) с файла по 20 штук, пингует их, те что пингуются пробует спарсить инфу с айпишек, пишет в файл. Встретился с проблемой, что некоторые айпишки пингуются, но получение информации с аппарата никогда не заканчивается, ну и далее срипт перестает сканировать сети, в общем зависает, при этом ошибок никаких не пишет. Да и бывают другие устройства с веб мордами, но тут уже ошибки пишет и не останавливается, не страшно. Подумал может чего прописать в catch, но идей не пришло. Единственное, что пришло в голову это прописать ограничение по времени выполнения задачи. То есть, если инфа не получена за 5-10 секунд, то пропустить данный адрес, перейти к следующему. Может у кого есть идеи как решить проблему или воплотить мою?!
param (
#[parameter(Mandatory=$true)]
[string]$outfile = 'C:\results\phone.csv',
$enc1 = 65001,
$enc2 = 28591,
[int[]]$SelectTable = 1,
#[parameter(Mandatory=$true)]
[String]$a=((Get-Date).ToShortDateString() | Foreach-Object {$_ -replace "\.", ""})
)

#---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------
# Установка дополнительного модуля PowerHTML, для независимого парсинга HTML
# Может потребоваться ручное подтверждение установки.
if (!(get-module -list powerhtml)) {
write-verbose "Installing PowerHTML module for the current user..."
install-module powerhtml #-scope currentuser
}
#-----------------------------------------------------------------------------------------

function convert ($from, $to){
begin{
$fenc = [text.encoding]::getencoding($from)
$tenc = [text.encoding]::getencoding($to)
}
process{
$a = $tenc.getbytes($_)
$fenc.getstring($a)
}
}
[net.servicepointmanager]::securityprotocol = 0
[array]$arr = gc 'C:\scripts\phone\all_ip.txt'
$ips = 65..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort

if ([string]::isnullorempty($selecttable)){
$number = 0
} else {$number = $selecttable}
$x = 0

for ($i =20; $i -le ($ips.count - 1); $i += 20) # по 20 адресов
{
$ips[$x..$i] | foreach -parallel {
if (test-connection $_ -count 1 -q -timeout 1){
try {
$ip = $_
$a = (iwr $_).content
$content = if ($a -match [char]208){
if ($a -match 'windows-1251'){
$enc1,$enc2 = 1251,1252
$a|convert $enc1 $enc2
} else {$a|convert $using:enc1 $using:enc2}
} else {$a}
$html = [net.webutility]::htmldecode($content)|convertfrom-html
[array]$tables = $html.selectnodes('//table')
# Исключение вложенных таблиц:
$tables = $tables|?{$_.selectnodes('.//table') -eq $null}
$tbl = $tables[$using:number]|%{$n=0}{
$tr = $_.selectnodes('.//tr')
$headers = @()
if ($headers = $_.selectnodes('.//th')){
$headers = ($headers|select -exp innertext).trim()
} else {
$headers = 1..([linq.parallelenumerable]::max(
[linq.parallelenumerable]::asparallel(
($tr|%{$_.selectnodes('.//td').count})
)
))|%{"H$_"}
}
$rowind = ,1 * $headers.count
$tr|?{$_.selectnodes('.//td') -ne $null}|%{
$row = $_.selectnodes('.//td')|%{
$attr = $_.attributes
if ($attr){
$rowspan = ($attr|? name -eq 'rowspan').value
$colspan = ($attr|? name -eq 'colspan').value
}
[pscustomobject]@{
'InnerText' = $_.innertext
'RowSpan' = if($rowspan){[int]$rowspan} else {1}
'ColSpan' = if($colspan){[int]$colspan} else {1}
}
}
$str = [ordered]@{}
$k=0
foreach ($item in $row) {
if ($rowind[$k] -gt 1){
while ($rowind[$k] -gt 1) {
$str[$headers[$k]] = $null
$rowind[$k] -= 1
$k++
}
}
if (($colspan = $item.colspan) -gt 1) {
$str[$headers[$k]] = if ($item.innertext) {
$item.innertext.trim()
} else {$null}
if ($item.rowspan -gt 1) {$rowind[$k] = $item.rowspan}
$k++
while ($colspan -gt 1) {
$str[$headers[$k]] = $null
$colspan -=1
if ($rowind[$k] -gt 1) {$rowind[$k]-=1}
$k++
}
} else {
$str[$headers[$k]] = if($item.innertext){
$item.innertext.trim()
} else {$null}
if ($item.rowspan -gt 1){$rowind[$k] = $item.rowspan}
$k++
}
}
[pscustomobject]$str
}
}
$parr1 = $tbl.h1
if ($tbl.h2 -ne $null) {$parr2 = $tbl.h2} else {$parr2 = $tbl.h3}
[pscustomobject]@{
'IP' = $_
'MAC-адрес' = if ([array]::indexof($parr1,'MAC-адрес') -ne -1) {
$parr2[([array]::indexof($parr1,'MAC-адрес'))]
} else {$parr2[([array]::indexof($parr1,'MAC Address'))]}
'Номер телефона' = if ([array]::indexof($parr1,'Номер телефона') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер телефона'))]
} elseif ([array]::indexof($parr1,'Номер телефона 1') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер телефона 1'))]
} else {
$parr2[([array]::indexof($parr1,'Phone DN'))]
}
'Серийный номер' = if ([array]::indexof($parr1,'Серийный номер') -ne -1) {
$parr2[([array]::indexof($parr1,'Серийный номер'))]
} else {$parr2[([array]::indexof($parr1,'Serial Number'))]}
'Номер модели' = if ([array]::indexof($parr1,'Номер модели') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер модели'))]
} else {$parr2[([array]::indexof($parr1,'Model Number'))]}
}
} catch {
write-host Ошибка: $ip - $_ -for red
}
}
} -throttlelimit 100 | export-csv $outfile -notype -enc utf-8 -d ';' -append
$x = $i + 1
}
Copy-item -Path $outfile -Destination "C:\Base" -Force

YuS_2
21-10-2020, 12:15
Может у кого есть идеи как решить проблему или воплотить мою?! »
Тут необходимо определить на каком этапе работы скрипта, а именно после выполнения какой команды происходит "подвисание", для этого можно, как минимум, в этом месте добавить команды для контроля:
...
try {
$ip = $_
write-output "#### - ip = $ip - ####"
$a = (iwr $_).content
write-output "#### - контент получен из $ip - ####"
...
и смотреть, что получаем в консоли... т.е. все ли пропингованные IP отдают контент и если не отдают, то надо смотреть в какой момент подвисает работа скрипта... в общем, заниматься поиском затыка. Без доступа к реальным аппаратам делать какие-либо выводы сложновато.

Griboed0ff
27-10-2020, 08:20
и смотреть, что получаем в консоли »
Странно, но сделал примерно так как вы сказали и выставил -throttlelimit 1000000 и сразу помногу подсетей и скрипт не завис и отработал до конца.. Я еще пару раз его прогоню, посмотрю может в другие разы зависнетparam (
#[parameter(Mandatory=$true)]
[string]$outfile = 'C:\results\phone.csv',
$enc1 = 65001,
$enc2 = 28591,
[int[]]$SelectTable = 1,
#[parameter(Mandatory=$true)]
[String]$a=((Get-Date).ToShortDateString() | Foreach-Object {$_ -replace "\.", ""})
)

#---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------
# Установка дополнительного модуля PowerHTML, для независимого парсинга HTML
# Может потребоваться ручное подтверждение установки.
if (!(get-module -list powerhtml)) {
write-verbose "Installing PowerHTML module for the current user..."
install-module powerhtml #-scope currentuser
}
#-----------------------------------------------------------------------------------------

function convert ($from, $to){
begin{
$fenc = [text.encoding]::getencoding($from)
$tenc = [text.encoding]::getencoding($to)
}
process{
$a = $tenc.getbytes($_)
$fenc.getstring($a)
}
}
[net.servicepointmanager]::securityprotocol = 0
[array]$arr = gc 'C:\scripts\phone\all_ip.txt'
$ips = 130..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort

if ([string]::isnullorempty($selecttable)){
$number = 0
} else {$number = $selecttable}
$x = 0

for ($i =500; $i -le ($ips.count - 1); $i += 500) # по 500 адресов
{
$ips[$x..$i]| foreach -parallel {
if ( test-connection $_ -count 1 -q -timeout 1

){ try {
$ip = $_
write-host "запрос контента с $ip " -for yellow
$a = (iwr $_).content
write-host "контент $ip получен" -for Green
$content = if ($a -match [char]208){
if ($a -match 'windows-1251'){
$enc1,$enc2 = 1251,1252
$a|convert $enc1 $enc2
} else {$a|convert $using:enc1 $using:enc2}
} else {$a}
$html = [net.webutility]::htmldecode($content)|convertfrom-html
[array]$tables = $html.selectnodes('//table')
# Исключение вложенных таблиц:
$tables = $tables|?{$_.selectnodes('.//table') -eq $null}
$tbl = $tables[$using:number]|%{$n=0}{
$tr = $_.selectnodes('.//tr')
$headers = @()
if ($headers = $_.selectnodes('.//th')){
$headers = ($headers|select -exp innertext).trim()
} else {
$headers = 1..([linq.parallelenumerable]::max(
[linq.parallelenumerable]::asparallel(
($tr|%{$_.selectnodes('.//td').count})
)
))|%{"H$_"}
}
$rowind = ,1 * $headers.count
$tr|?{$_.selectnodes('.//td') -ne $null}|%{
$row = $_.selectnodes('.//td')|%{
$attr = $_.attributes
if ($attr){
$rowspan = ($attr|? name -eq 'rowspan').value
$colspan = ($attr|? name -eq 'colspan').value
}
[pscustomobject]@{
'InnerText' = $_.innertext
'RowSpan' = if($rowspan){[int]$rowspan} else {1}
'ColSpan' = if($colspan){[int]$colspan} else {1}
}
}
$str = [ordered]@{}
$k=0
foreach ($item in $row) {
if ($rowind[$k] -gt 1){
while ($rowind[$k] -gt 1) {
$str[$headers[$k]] = $null
$rowind[$k] -= 1
$k++
}
}
if (($colspan = $item.colspan) -gt 1) {
$str[$headers[$k]] = if ($item.innertext) {
$item.innertext.trim()
} else {$null}
if ($item.rowspan -gt 1) {$rowind[$k] = $item.rowspan}
$k++
while ($colspan -gt 1) {
$str[$headers[$k]] = $null
$colspan -=1
if ($rowind[$k] -gt 1) {$rowind[$k]-=1}
$k++
}
} else {
$str[$headers[$k]] = if($item.innertext){
$item.innertext.trim()
} else {$null}
if ($item.rowspan -gt 1){$rowind[$k] = $item.rowspan}
$k++
}
}
[pscustomobject]$str
}
}
$parr1 = $tbl.h1
if ($tbl.h2 -ne $null) {$parr2 = $tbl.h2} else {$parr2 = $tbl.h3}
[pscustomobject]@{
'IP' = $_
'MAC-адрес' = if ([array]::indexof($parr1,'MAC-адрес') -ne -1) {
$parr2[([array]::indexof($parr1,'MAC-адрес'))]
} else {$parr2[([array]::indexof($parr1,'MAC Address'))]}
'Номер телефона' = if ([array]::indexof($parr1,'Номер телефона') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер телефона'))]
} elseif ([array]::indexof($parr1,'Номер телефона 1') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер телефона 1'))]
} else {
$parr2[([array]::indexof($parr1,'Phone DN'))]
}
'Серийный номер' = if ([array]::indexof($parr1,'Серийный номер') -ne -1) {
$parr2[([array]::indexof($parr1,'Серийный номер'))]
} else {$parr2[([array]::indexof($parr1,'Serial Number'))]}
'Номер модели' = if ([array]::indexof($parr1,'Номер модели') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер модели'))]
} else {$parr2[([array]::indexof($parr1,'Model Number'))]}
}

} catch {
write-host Ошибка: $ip - $_ -for red

}
}
} -throttlelimit 1000000 | export-csv $outfile -notype -enc utf-8 -d ';' -append
$x = $i + 1
}
Единственное же, что при ошибках красных цветом срипт останавливается на минуту, жаль терять столько времени. Получается скрипт встречается с оборудованием, которое пингуется, но является другим устройством, например, принтером, а не айпи телефоном. С простых телефонов контент получает за секунду может две.
запрос контента с 10.0.21.11
запрос контента с 10.0.21.11
запрос контента с 10.0.21.12
запрос контента с 10.0.21.12
контент 10.0.21.11 получен
контент 10.0.21.11 получен
запрос контента с 10.0.21.13
запрос контента с 10.0.21.13
контент 10.0.21.12 получен
контент 10.0.21.12 получен
запрос контента с 10.0.21.14
запрос контента с 10.0.21.14
запрос контента с 10.0.21.15
контент 10.0.21.13 получен
контент 10.0.21.13 получен
запрос контента с 10.0.21.15
контент 10.0.21.14 получен
контент 10.0.21.14 получен
контент 10.0.21.15 получен
контент 10.0.21.15 получен
запрос контента с 10.0.21.16
запрос контента с 10.0.21.16
запрос контента с 10.0.21.17
запрос контента с 10.0.21.17
запрос контента с 10.0.21.18
запрос контента с 10.0.21.18
контент 10.0.21.16 получен
контент 10.0.21.16 получен
контент 10.0.21.17 получен
контент 10.0.21.17 получен
запрос контента с 10.0.21.19
запрос контента с 10.0.21.19
контент 10.0.21.18 получен
контент 10.0.21.18 получен
запрос контента с 10.0.21.21
запрос контента с 10.0.21.20
запрос контента с 10.0.21.20
запрос контента с 10.0.21.22
запрос контента с 10.0.21.22
запрос контента с 10.0.21.21
запрос контента с 10.0.21.23
запрос контента с 10.0.21.23
запрос контента с 10.0.21.24
запрос контента с 10.0.21.24
запрос контента с 10.0.21.25
запрос контента с 10.0.21.25
запрос контента с 10.0.21.27
запрос контента с 10.0.21.26
запрос контента с 10.0.21.27
запрос контента с 10.0.21.26
запрос контента с 10.0.21.29
запрос контента с 10.0.21.29
контент 10.0.21.19 получен
контент 10.0.21.19 получен
запрос контента с 10.0.21.30
запрос контента с 10.0.21.31
запрос контента с 10.0.21.30
запрос контента с 10.0.21.31
запрос контента с 10.0.21.32
запрос контента с 10.0.21.32
контент 10.0.21.20 получен
контент 10.0.21.21 получен
запрос контента с 10.0.21.33
запрос контента с 10.0.21.33
запрос контента с 10.0.21.34
контент 10.0.21.23 получен
контент 10.0.21.21 получен
контент 10.0.21.20 получен
контент 10.0.21.23 получен
контент 10.0.21.22 получен
контент 10.0.21.29 получен
контент 10.0.21.30 получен
контент 10.0.21.22 получен
запрос контента с 10.0.21.35
контент 10.0.21.29 получен
контент 10.0.21.31 получен
запрос контента с 10.0.21.34
запрос контента с 10.0.21.35
запрос контента с 10.0.21.36
контент 10.0.21.31 получен
контент 10.0.21.30 получен
запрос контента с 10.0.21.36
контент 10.0.21.27 получен
контент 10.0.21.26 получен
контент 10.0.21.27 получен
контент 10.0.21.26 получен
контент 10.0.21.33 получен
запрос контента с 10.0.21.37
контент 10.0.21.34 получен
запрос контента с 10.0.21.37
контент 10.0.21.24 получен
контент 10.0.21.24 получен
запрос контента с 10.0.21.38
запрос контента с 10.0.21.38
контент 10.0.21.25 получен
контент 10.0.21.36 получен
контент 10.0.21.34 получен
контент 10.0.21.33 получен
контент 10.0.21.25 получен
контент 10.0.21.37 получен
запрос контента с 10.0.21.39
запрос контента с 10.0.21.39
контент 10.0.21.37 получен
контент 10.0.21.36 получен
Недопустимый параметр: 28591
Недопустимый параметр: 28591
контент 10.0.21.35 получен
запрос контента с 10.0.21.40
контент 10.0.21.35 получен
запрос контента с 10.0.21.41
запрос контента с 10.0.21.40
контент 10.0.21.38 получен
запрос контента с 10.0.21.42
запрос контента с 10.0.21.41
контент 10.0.21.38 получен
запрос контента с 10.0.21.42
контент 10.0.21.39 получен
запрос контента с 10.0.21.43
контент 10.0.21.39 получен
ConvertFrom-Html:
Line |
15 | … $html = [net.webutility]::htmldecode($content)|convertfrom-html
| ~~~~~~~~~~~~~~~~
| Cannot bind argument to parameter 'Content' because it is null.
Ошибка: 10.0.21.37 - You cannot call a method on a null-valued expression.
Ошибка: 10.0.21.32 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
ConvertFrom-Html:
Line |
15 | … $html = [net.webutility]::htmldecode($content)|convertfrom-html
| ~~~~~~~~~~~~~~~~
| Cannot bind argument to parameter 'Content' because it is null.
Ошибка: 10.0.21.37 - You cannot call a method on a null-valued expression.
Ошибка: 10.0.21.32 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.0.21.44
контент 10.0.21.40 получен
запрос контента с 10.0.21.44
контент 10.0.21.40 получен
запрос контента с 10.0.21.43
контент 10.0.21.42 получен
контент 10.0.21.42 получен
запрос контента с 10.0.21.45
запрос контента с 10.0.21.45
контент 10.0.21.43 получен
запрос контента с 10.0.21.46
контент 10.0.21.43 получен
запрос контента с 10.0.21.46
запрос контента с 10.0.21.47
запрос контента с 10.0.21.47
контент 10.0.21.41 получен
контент 10.0.21.41 получен
запрос контента с 10.0.21.48
запрос контента с 10.0.21.48
контент 10.0.21.44 получен
контент 10.0.21.44 получен
запрос контента с 10.0.21.49
запрос контента с 10.0.21.49
запрос контента с 10.0.21.50
запрос контента с 10.0.21.50
контент 10.0.21.45 получен
контент 10.0.21.45 получен
запрос контента с 10.0.21.51
запрос контента с 10.0.21.51
запрос контента с 10.0.21.52
запрос контента с 10.0.21.52
запрос контента с 10.0.21.54
запрос контента с 10.0.21.53
запрос контента с 10.0.21.53
контент 10.0.21.46 получен
запрос контента с 10.0.21.54
контент 10.0.21.46 получен
запрос контента с 10.0.21.55
запрос контента с 10.0.21.55
запрос контента с 10.0.21.56
контент 10.0.21.47 получен
запрос контента с 10.0.21.57
контент 10.0.21.48 получен
запрос контента с 10.0.21.56
контент 10.0.21.47 получен
контент 10.0.21.48 получен
запрос контента с 10.0.21.57
запрос контента с 10.0.21.58
контент 10.0.21.49 получен
контент 10.0.21.50 получен
запрос контента с 10.0.21.59
контент 10.0.21.49 получен
запрос контента с 10.0.21.58
контент 10.0.21.50 получен
запрос контента с 10.0.21.59
контент 10.0.21.51 получен
контент 10.0.21.52 получен
контент 10.0.21.54 получен
контент 10.0.21.51 получен
контент 10.0.21.54 получен
запрос контента с 10.0.21.60
контент 10.0.21.52 получен
запрос контента с 10.0.21.60
запрос контента с 10.0.21.61
контент 10.0.21.57 получен
запрос контента с 10.0.21.61
контент 10.0.21.57 получен
контент 10.0.21.53 получен
запрос контента с 10.0.21.62
контент 10.0.21.58 получен
контент 10.0.21.58 получен
контент 10.0.21.55 получен
контент 10.0.21.53 получен
контент 10.0.21.55 получен
запрос контента с 10.0.21.62
контент 10.0.21.62 получен
контент 10.0.21.59 получен
контент 10.0.21.59 получен
контент 10.0.21.62 получен
запрос контента с 10.0.21.63
запрос контента с 10.0.21.63
контент 10.0.21.60 получен
контент 10.0.21.60 получен
запрос контента с 10.0.21.64
запрос контента с 10.0.21.64
контент 10.0.21.61 получен
запрос контента с 10.0.21.65
контент 10.0.21.61 получен
запрос контента с 10.0.21.65
запрос контента с 10.0.21.66
запрос контента с 10.0.21.67
запрос контента с 10.0.21.66
контент 10.0.21.63 получен
запрос контента с 10.0.21.67
Ошибка: 10.0.21.56 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
контент 10.0.21.64 получен
запрос контента с 10.0.21.68
контент 10.0.21.65 получен
контент 10.0.21.64 получен
контент 10.0.21.63 получен
запрос контента с 10.0.21.69
запрос контента с 10.0.21.68
контент 10.0.21.66 получен
контент 10.0.21.65 получен
контент 10.0.21.66 получен
контент 10.0.21.67 получен
контент 10.0.21.68 получен
запрос контента с 10.0.21.69
запрос контента с 10.0.21.70
контент 10.0.21.67 получен
запрос контента с 10.0.21.70
контент 10.0.21.69 получен
контент 10.0.21.68 получен
запрос контента с 10.0.21.71
Ошибка: 10.0.21.66 - You cannot call a method on a null-valued expression.
Ошибка: 10.0.21.66 - You cannot call a method on a null-valued expression.
запрос контента с 10.0.21.71
Ошибка: 10.0.21.67 - You cannot call a method on a null-valued expression.
запрос контента с 10.0.21.72
контент 10.0.21.69 получен
Ошибка: 10.0.21.67 - You cannot call a method on a null-valued expression.
запрос контента с 10.0.21.72
запрос контента с 10.0.21.73
запрос контента с 10.0.21.73
контент 10.0.21.70 получен
контент 10.0.21.72 получен
контент 10.0.21.70 получен
контент 10.0.21.71 получен
запрос контента с 10.0.21.74
контент 10.0.21.71 получен
запрос контента с 10.0.21.74
контент 10.0.21.73 получен
контент 10.0.21.72 получен
запрос контента с 10.0.21.76
контент 10.0.21.74 получен
контент 10.0.21.73 получен
запрос контента с 10.0.21.76
контент 10.0.21.74 получен
контент 10.0.21.76 получен
контент 10.0.21.76 получен
запрос контента с 10.112.1.117
запрос контента с 10.112.1.129
запрос контента с 10.112.1.130
контент 10.112.1.117 получен
Ошибка: 10.112.1.117 - You cannot call a method on a null-valued expression.
контент 10.112.1.130 получен
запрос контента с 10.112.1.2
Ошибка: 10.112.1.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.1.4
запрос контента с 10.112.1.50
контент 10.112.1.50 получен
Ошибка: 10.112.1.50 - You cannot call a method on a null-valued expression.
Ошибка: 10.112.1.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.1.4 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.10.117
контент 10.112.10.117 получен
Ошибка: 10.112.10.117 - You cannot call a method on a null-valued expression.
запрос контента с 10.112.10.127
запрос контента с 10.112.10.129
запрос контента с 10.112.10.128
запрос контента с 10.112.10.130
контент 10.112.10.130 получен
Ошибка: 10.112.10.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.10.159
запрос контента с 10.112.10.2
запрос контента с 10.112.10.20
запрос контента с 10.112.10.3
запрос контента с 10.112.10.51
запрос контента с 10.112.10.50
контент 10.112.10.51 получен
контент 10.112.10.50 получен
Ошибка: 10.112.10.50 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.10.51 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.10.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.10.20 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.10.3 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.100.117
запрос контента с 10.112.100.129
запрос контента с 10.112.100.127
контент 10.112.100.117 получен
запрос контента с 10.112.100.128
запрос контента с 10.112.100.130
Ошибка: 10.112.100.117 - You cannot call a method on a null-valued expression.
запрос контента с 10.112.100.159
контент 10.112.100.130 получен
Ошибка: 10.0.21.56 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
запрос контента с 10.112.100.2
запрос контента с 10.112.100.20
Ошибка: 10.112.100.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.100.3
запрос контента с 10.112.100.55
контент 10.112.100.55 получен
Ошибка: 10.112.100.55 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.100.20 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.100.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.100.8
Ошибка: 10.112.100.3 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.101.117
запрос контента с 10.112.101.128
запрос контента с 10.112.101.127
Ошибка: 10.112.100.8 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.101.129
запрос контента с 10.112.101.131
контент 10.112.101.117 получен
Ошибка: 10.112.101.117 - You cannot call a method on a null-valued expression.
запрос контента с 10.112.101.2
контент 10.112.101.131 получен
запрос контента с 10.112.101.50
Ошибка: 10.112.101.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.101.66
Ошибка: 10.112.101.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
контент 10.112.101.50 получен
Ошибка: 10.112.101.50 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.101.66 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.103.117
контент 10.112.103.117 получен
Ошибка: 10.112.103.117 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
запрос контента с 10.112.103.188
запрос контента с 10.112.103.2
запрос контента с 10.112.103.4
Ошибка: 10.112.119.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
контент 10.112.119.55 получен
Ошибка: 10.112.119.55 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.119.3 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.119.75
Ошибка: 10.112.119.75 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.114.127 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.114.128 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
запрос контента с 10.112.12.117
контент 10.112.12.117 получен
Ошибка: 10.112.12.117 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
запрос контента с 10.112.12.127
запрос контента с 10.112.12.128
запрос контента с 10.112.12.129
запрос контента с 10.112.12.130
контент 10.112.12.130 получен
Ошибка: 10.112.12.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.12.159
запрос контента с 10.112.12.160
запрос контента с 10.112.12.161
запрос контента с 10.112.12.162
Ошибка: 10.112.12.161 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.12.2
Ошибка: 10.112.12.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.12.3
запрос контента с 10.112.12.50
контент 10.112.12.50 получен
Ошибка: 10.112.12.50 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.12.3 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.120.117
запрос контента с 10.112.120.127
запрос контента с 10.112.120.128
контент 10.112.120.117 получен
запрос контента с 10.112.120.129
запрос контента с 10.112.120.131
Ошибка: 10.112.120.117 - You cannot call a method on a null-valued expression.
контент 10.112.120.131 получен
Ошибка: 10.112.120.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.120.2
запрос контента с 10.112.120.20
запрос контента с 10.112.120.3
запрос контента с 10.112.120.4
запрос контента с 10.112.120.50
Ошибка: 10.112.120.20 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.118.127 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.120.3 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.118.159 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.120.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.118.128 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.120.4 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.120.55
контент 10.112.120.50 получен
контент 10.112.120.55 получен
Ошибка: 10.112.120.50 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.120.55 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
запрос контента с 10.112.121.115
запрос контента с 10.112.121.129
запрос контента с 10.112.121.131
контент 10.112.121.115 получен
Ошибка: 10.112.121.115 - You cannot call a method on a null-valued expression.
Ошибка: 10.112.119.127 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.119.128 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
контент 10.112.121.131 получен
запрос контента с 10.112.121.2
Ошибка: 10.112.121.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.121.50
контент 10.112.121.50 получен
Ошибка: 10.112.121.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.121.50 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
запрос контента с 10.112.122.117
запрос контента с 10.112.122.129
запрос контента с 10.112.122.158
Ошибка: 10.112.12.127 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.12.128 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
запрос контента с 10.112.122.2
контент 10.112.122.158 получен
Ошибка: 10.112.122.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.122.3
запрос контента с 10.112.122.50
Ошибка: 10.112.12.159 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.12.160 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.12.162 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
контент 10.112.122.117 получен
контент 10.112.122.50 получен
Ошибка: 10.112.122.50 - You cannot call a method on a null-valued expression.
Ошибка: 10.112.122.117 - You cannot call a method on a null-valued expression.
запрос контента с 10.112.122.78
Ошибка: 10.112.122.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.123.129
запрос контента с 10.112.123.130
Ошибка: 10.112.122.78 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
контент 10.112.123.130 получен
Ошибка: 10.112.123.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.123.2
запрос контента с 10.112.123.55
запрос контента с 10.112.123.67
контент 10.112.123.55 получен
Ошибка: 10.112.123.55 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.123.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.124.117
контент 10.112.124.117 получен
запрос контента с 10.112.124.127
запрос контента с 10.112.124.128
запрос контента с 10.112.124.129
Ошибка: 10.112.124.117 - You cannot call a method on a null-valued expression.
Ошибка: 10.112.123.67 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.124.134
контент 10.112.124.134 получен
запрос контента с 10.112.124.2
запрос контента с 10.112.124.20
Ошибка: 10.112.124.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.124.3
запрос контента с 10.112.124.4
запрос контента с 10.112.124.50
Ошибка: 10.112.120.127 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
Ошибка: 10.112.120.128 - Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
запрос контента с 10.112.124.55
контент 10.112.124.50 получен
контент 10.112.124.55 получен
Ошибка: 10.112.124.50 - Exception calling "IndexOf" with "2" argument(s): "Value cannot be null. (Parameter 'array')"
Ошибка: 10.112.124.55 - You cannot call a method on a null-valued expression.
Ошибка: 10.112.124.2 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.124.20 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.124.3 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
Ошибка: 10.112.124.4 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.
запрос контента с 10.112.125.117
запрос контента с 10.112.125.129
запрос контента с 10.112.125.130
контент 10.112.125.117 получен
Ошибка: 10.112.125.117 - You cannot call a method on a null-valued expression.
контент 10.112.125.130 получен
Ошибка: 10.112.125.129 - Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение.

Griboed0ff
27-10-2020, 08:58
Я еще пару раз его прогоню, посмотрю может в другие разы зависнет »
Второй раз запустил скрипт и он вскоре завис, получается адрес пинганулся, был запрошен контент и ответа, что он получен нет, после этого адреса еще сколько то поработало и остановилось. В мониторинге сети этот адрес остался с открытым соединением, то есть соединение не закрыто и пока через диспетчер не убьешь процесс пошика, будет оставаться на месте.

Griboed0ff
27-10-2020, 09:49
второй раз зависает на одной и той айпишке, страничка вроде открывается нормально.

YuS_2
27-10-2020, 21:44
был запрошен контент и ответа, что он получен нет »
если есть запись в консоли о запросе и нет записи о полученном контенте, то зависает здесь:
$a = (iwr $_).content
и если зависание происходит на одном и том же IP, то проверьте вручную:
iwr "IP_на_котором_зависает"
если вручную тоже не дает ответа, то исключите IP из проверки... если же ответ приходит, то необходимо проверять качество связи или ещё какие-то меры надо принимать - это индивидуально...

Griboed0ff
28-10-2020, 12:35
то исключите IP из проверки... »Я уже пробовал данный метод, уже штук 20 удалил, но снова и снова появляются такие аппараты, на которых зависнет, там только подсетей 3500 строк, вручную убирать из списка не вариант, так как в этой же подсети могут быть и другие аппараты, которые нормально отдали контент. Раз уж найдено место где зависает, может быть все таки ограничить по времени, если долго не приходит контент, то пропустить данный ip?

И что можно сделать с обработкой ошибок: catch {write-host Ошибка: $ip - $_ -for red}, очень долго задерживается на ошибках. Может сделать какую-нибудь проверку, на предмет является ли аппарат, который пинганулся айпишкой, хотя бы открыт ли 80 порт, а потом уже пробовать скачивать контент.

YuS_2
28-10-2020, 21:58
Раз уж найдено место где зависает, может быть все таки ограничить по времени, если долго не приходит контент, то пропустить данный ip? »
Надо разбираться с тем, почему не приходит ответ...
Но можно и таймаут добавить...
...
$a = $null
$a = (iwr $_ -timeout 3 -ea 1).content
# При отсутствии контента, переход к следующей итерации:
if (!$a) {
"От IP - $ip, не получен контент"|out-file log.txt -enc utf8 -app
return
}
...

Добавлено:
Для корректности, добавил предварительное удаление переменной $a в каждой итерации...
Ну и на всякий случай добавлен вывод в лог IP, которые дают ответ, но не отдают контент. Если потребуется вывод всех ошибок в лог, то его надо добавить в секцию catch {...}

Griboed0ff
03-11-2020, 09:38
iwr "IP_на_котором_зависает" » попробовал, через браузер тоже не открывается, но пингуется PS C:\Windows\system32> iwr "10.16.17.130"
iwr : Невозможно соединиться с удаленным сервером
строка:1 знак:1
+ iwr "10.16.17.130"
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
$a = (iwr $_ -timeout 3 -ea 1).content » не помогло на "10.16.17.130" все равно зависло, скрипт остановился.
Сейчас скрипт param (
#[parameter(Mandatory=$true)]
[string]$outfile = 'C:\results\phone.csv',
$enc1 = 65001,
$enc2 = 28591,
[int[]]$SelectTable = 1,
#[parameter(Mandatory=$true)]
[String]$a=((Get-Date).ToShortDateString() | Foreach-Object {$_ -replace "\.", ""})
)

#---Эту секцию можно удалить после однократного запуска скрипта от имени админа ------------------
# Установка дополнительного модуля PowerHTML, для независимого парсинга HTML
# Может потребоваться ручное подтверждение установки.
if (!(get-module -list powerhtml)) {
write-verbose "Installing PowerHTML module for the current user..."
install-module powerhtml #-scope currentuser
}
#-----------------------------------------------------------------------------------------

function convert ($from, $to){
begin{
$fenc = [text.encoding]::getencoding($from)
$tenc = [text.encoding]::getencoding($to)
}
process{
$a = $tenc.getbytes($_)
$fenc.getstring($a)
}
}
[net.servicepointmanager]::securityprotocol = 0
[array]$arr = gc 'C:\scripts\phone\all_ip.txt'
$ips = 2..190 |%{$n=$_;$arr|%{"$_"+$n}}|sort

if ([string]::isnullorempty($selecttable)){
$number = 0
} else {$number = $selecttable}
$x = 0

for ($i =500; $i -le ($ips.count - 1); $i += 500) # по 20 адресов
{
$ips[$x..$i]| foreach -parallel {
if ( test-connection $_ -count 1 -q -timeout 1

){ try {
$ip = $_
$a = $null
$a = (iwr $_ -timeout 3 -ea 1).content #
$content = if ($a -match [char]208){
if ($a -match 'windows-1251'){
$enc1,$enc2 = 1251,1252
$a|convert $enc1 $enc2
} else {$a|convert $using:enc1 $using:enc2}
} else {$a}
$html = [net.webutility]::htmldecode($content)|convertfrom-html
[array]$tables = $html.selectnodes('//table')
# Исключение вложенных таблиц:
$tables = $tables|?{$_.selectnodes('.//table') -eq $null}
$tbl = $tables[$using:number]|%{$n=0}{
$tr = $_.selectnodes('.//tr')
$headers = @()
if ($headers = $_.selectnodes('.//th')){
$headers = ($headers|select -exp innertext).trim()
} else {
$headers = 1..([linq.parallelenumerable]::max(
[linq.parallelenumerable]::asparallel(
($tr|%{$_.selectnodes('.//td').count})
)
))|%{"H$_"}
}
$rowind = ,1 * $headers.count
$tr|?{$_.selectnodes('.//td') -ne $null}|%{
$row = $_.selectnodes('.//td')|%{
$attr = $_.attributes
if ($attr){
$rowspan = ($attr|? name -eq 'rowspan').value
$colspan = ($attr|? name -eq 'colspan').value
}
[pscustomobject]@{
'InnerText' = $_.innertext
'RowSpan' = if($rowspan){[int]$rowspan} else {1}
'ColSpan' = if($colspan){[int]$colspan} else {1}
}
}
$str = [ordered]@{}
$k=0
foreach ($item in $row) {
if ($rowind[$k] -gt 1){
while ($rowind[$k] -gt 1) {
$str[$headers[$k]] = $null
$rowind[$k] -= 1
$k++
}
}
if (($colspan = $item.colspan) -gt 1) {
$str[$headers[$k]] = if ($item.innertext) {
$item.innertext.trim()
} else {$null}
if ($item.rowspan -gt 1) {$rowind[$k] = $item.rowspan}
$k++
while ($colspan -gt 1) {
$str[$headers[$k]] = $null
$colspan -=1
if ($rowind[$k] -gt 1) {$rowind[$k]-=1}
$k++
}
} else {
$str[$headers[$k]] = if($item.innertext){
$item.innertext.trim()
} else {$null}
if ($item.rowspan -gt 1){$rowind[$k] = $item.rowspan}
$k++
}
}
[pscustomobject]$str
}
}
$parr1 = $tbl.h1
if ($tbl.h2 -ne $null) {$parr2 = $tbl.h2} else {$parr2 = $tbl.h3}
[pscustomobject]@{
'IP' = $_
'MAC-адрес' = if ([array]::indexof($parr1,'MAC-адрес') -ne -1) {
$parr2[([array]::indexof($parr1,'MAC-адрес'))]
} else {$parr2[([array]::indexof($parr1,'MAC Address'))]}
'Номер телефона' = if ([array]::indexof($parr1,'Номер телефона') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер телефона'))]
} elseif ([array]::indexof($parr1,'Номер телефона 1') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер телефона 1'))]
} else {
$parr2[([array]::indexof($parr1,'Phone DN'))]
}
'Серийный номер' = if ([array]::indexof($parr1,'Серийный номер') -ne -1) {
$parr2[([array]::indexof($parr1,'Серийный номер'))]
} else {$parr2[([array]::indexof($parr1,'Serial Number'))]}
'Номер модели' = if ([array]::indexof($parr1,'Номер модели') -ne -1) {
$parr2[([array]::indexof($parr1,'Номер модели'))]
} else {$parr2[([array]::indexof($parr1,'Model Number'))]}
}

} catch {if (!$a) {
"От IP - $ip, не получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
return
}

}
}
} -throttlelimit 10000 | export-csv $outfile -notype -enc utf-8 -d ';' -append
$x = $i + 1
}

Griboed0ff
03-11-2020, 10:09
Еще почему-то стал писать дубли в результат, ранее не было такого, я думал как раз $a = $null убережет от такого. 10.0.21.31 442B031A8F83 60056 PXN16090HP1 CP-6921
10.0.21.31 442B031A8F83 60056 PXN16090HP1 CP-6921
10.0.21.21 DCEB94CF0E36 60133 WZP19221BHM CP-7821
10.0.21.19 00778DF88C49 60140 WZP23060AM3 CP-7821
10.0.21.26 00778DF88BC1 60141 WZP23060AH3 CP-7821
10.0.21.20 00778DF88C60 60064 WZP23060AMS CP-7821
10.0.21.36 442B031A9EFF 60312 PXN16090IGT CP-6921
10.0.21.25 00778DF88C66 60031 WZP23060AMY CP-7821
10.0.21.36 442B031A9EFF 60312 PXN16090IGT CP-6921
10.0.21.23 00778DF88C7D 60324 WZP23060ANM CP-7821
10.0.21.25 00778DF88C66 60031 WZP23060AMY CP-7821
10.0.21.19 00778DF88C49 60140 WZP23060AM3 CP-7821
10.0.21.27 DCEB94CF0EE8 60035 WZP19221BMK CP-7821
10.0.21.34 442B031A9EB8 60110 PXN16090IET CP-6921
10.0.21.21 DCEB94CF0E36 60133 WZP19221BHM CP-7821
10.0.21.22 DCEB94CEDE81 60130 WZP1922122D CP-7821
10.0.21.24 00778DF88D41 60002 WZP23060AUD CP-7821
10.0.21.33 442B031A9561 60154 PXN16090G13 CP-6921
10.0.21.26 00778DF88BC1 60141 WZP23060AH3 CP-7821
10.0.21.22 DCEB94CEDE81 60130 WZP1922122D CP-7821
10.0.21.20 00778DF88C60 60064 WZP23060AMS CP-7821
10.0.21.35 6CFA8903D91E 60113 WZP18210AGH CP-7821
10.0.21.24 00778DF88D41 60002 WZP23060AUD CP-7821
10.0.21.27 DCEB94CF0EE8 60035 WZP19221BMK CP-7821
10.0.21.23 00778DF88C7D 60324 WZP23060ANM CP-7821
10.0.21.34 442B031A9EB8 60110 PXN16090IET CP-6921
10.0.21.39 00778DF88C5E 60169 WZP23060AMQ CP-7821
10.0.21.40 00778DF88D24 60246 WZP23060ATJ CP-7821
10.0.21.35 6CFA8903D91E 60113 WZP18210AGH CP-7821
10.0.21.38 DCEB94CED2B1 60036 WZP19220ZQD CP-7821
10.0.21.38 DCEB94CED2B1 60036 WZP19220ZQD CP-7821
10.0.21.40 00778DF88D24 60246 WZP23060ATJ CP-7821
10.0.21.39 00778DF88C5E 60169 WZP23060AMQ CP-7821
10.0.21.42 00778DF88C8B 60043 WZP23060AP1 CP-7821
10.0.21.42 00778DF88C8B 60043 WZP23060AP1 CP-7821
10.0.21.41 DCEB94CED156 60032 WZP19220ZGQ CP-7821
10.0.21.41 DCEB94CED156 60032 WZP19220ZGQ CP-7821
10.0.21.44 00778DF88CBF 60181 WZP23060AQK CP-7821
10.0.21.43 00778DF88FDD 60124 WZP23060BE1 CP-7821
10.0.21.44 00778DF88CBF 60181 WZP23060AQK CP-7821
10.0.21.43 00778DF88FDD 60124 WZP23060BE1 CP-7821
10.0.21.45 00778DF8CFF4 60054 WZP23070FBS CP-7821
10.0.21.45 00778DF8CFF4 60054 WZP23070FBS CP-7821
10.0.21.46 00778DF88D9D 60045 WZP23060AX3 CP-7821
10.0.21.46 00778DF88D9D 60045 WZP23060AX3 CP-7821
10.0.21.47 00778DF88C79 60041 WZP23060ANH CP-7821
10.0.21.48 00778DF88D56 60137 WZP23060AV0 CP-7821
10.0.21.47 00778DF88C79 60041 WZP23060ANH CP-7821
10.0.21.48 00778DF88D56 60137 WZP23060AV0 CP-7821
10.0.21.50 00778DF88C11 60240 WZP23060AKF CP-7821
10.0.21.49 00778DF88CBA 60019 WZP23060AQE CP-7821
10.0.21.54 00778DF88C87 60129 WZP23060ANX CP-7821
10.0.21.50 00778DF88C11 60240 WZP23060AKF CP-7821
10.0.21.49 00778DF88CBA 60019 WZP23060AQE CP-7821
10.0.21.51 00778DF88CCE 60040 WZP23060AR0 CP-7821
10.0.21.54 00778DF88C87 60129 WZP23060ANX CP-7821
10.0.21.52 DCEB94CED2AC 60030 WZP19220ZQ8 CP-7821
10.0.21.55 00778DF8C266 60058 WZP23070C06 CP-7821
10.0.21.51 00778DF88CCE 60040 WZP23060AR0 CP-7821
10.0.21.52 DCEB94CED2AC 60030 WZP19220ZQ8 CP-7821
10.0.21.58 00778DF88BE6 60003 WZP23060AJ6 CP-7821
10.0.21.63 44ADD9BC9079 60112 PUC17130IYU CP-6921
10.0.21.53 DCEB94CEDE9E 60131 WZP19221236 CP-7821
10.0.21.62 6CFA899431C8 60297 FCH18198WRH CP-DX650
10.0.21.58 00778DF88BE6 60003 WZP23060AJ6 CP-7821
10.0.21.57 00778DF88D13 60037 WZP23060AT1 CP-7821
10.0.21.53 DCEB94CEDE9E 60131 WZP19221236 CP-7821
10.0.21.59 00778DF88EB8 60091 WZP23060B5E CP-7821
10.0.21.60 6CFA8903CA68 60230 WZP182107JV CP-7821
10.0.21.59 00778DF88EB8 60091 WZP23060B5E CP-7821
10.0.21.55 00778DF8C266 60058 WZP23070C06 CP-7821
10.0.21.61 BC671C31A51F 60147 WZP18230O0H CP-7821
10.0.21.62 6CFA899431C8 60297 FCH18198WRH CP-DX650
10.0.21.63 44ADD9BC9079 60112 PUC17130IYU CP-6921
10.0.21.61 BC671C31A51F 60147 WZP18230O0H CP-7821
10.0.21.64 A4934C0D77CF 60258 PXN16190RD5 CP-6921
10.0.21.57 00778DF88D13 60037 WZP23060AT1 CP-7821
10.0.21.65 F0F755B667FD 60343 PXN16050A2X CP-6921
10.0.21.68 442B031A2941 60142 PXN16080KW2 CP-6921
10.0.21.64 A4934C0D77CF 60258 PXN16190RD5 CP-6921
10.0.21.65 F0F755B667FD 60343 PXN16050A2X CP-6921
10.0.21.60 6CFA8903CA68 60230 WZP182107JV CP-7821
10.0.21.70 2C542DE973EA 60127 PXN161606RN CP-6921
10.0.21.69 442B031A9AF1 60217 PXN16090F3B CP-6921
10.0.21.68 442B031A2941 60142 PXN16080KW2 CP-6921
10.0.21.69 442B031A9AF1 60217 PXN16090F3B CP-6921
10.0.21.70 2C542DE973EA 60127 PXN161606RN CP-6921
10.0.21.71 44ADD9BC9260 60062 PUC17130S9S CP-6921
10.0.21.71 44ADD9BC9260 60062 PUC17130S9S CP-6921
10.0.21.72 A44C1147E9FF 60020 PXN16170N4W CP-6921
10.0.21.73 A4934C40102B 60244 PXN16200L5T CP-6921
10.0.21.74 A44C1147EF3E 60046 PXN16170Q5G CP-6921
10.0.21.72 A44C1147E9FF 60020 PXN16170N4W CP-6921
10.0.21.74 A44C1147EF3E 60046 PXN16170Q5G CP-6921
10.0.21.73 A4934C40102B 60244 PXN16200L5T CP-6921
10.0.21.76 00778DF8D09E 60358 WZP23070FGS CP-7821
10.0.21.75 1C17D3C273EF 60311 FCH14188RT0 CP-7906G
10.0.21.75 1C17D3C273EF 60311 FCH14188RT0 CP-7906G
10.0.21.76 00778DF8D09E 60358 WZP23070FGS CP-7821
10.112.1.130 08CCA7F6624F 76797 WZP20490HOK CP-7821
10.112.10.130 00778DF8CB5C 53011 WZP23070DZN CP-7821
10.112.100.130 00778DF8C407 53005 WZP23070CCF CP-7821

Еще видимо out-file не успевает освобождать файл, очень часто файл занят, но лог мне и не нужен я его отключу, либо на export-csv переделаю. Line |
100 | … е получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The process cannot access the file 'C:\results\phone_log.txt' because it is being used by another process.
Out-File:
Line |
100 | … е получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The process cannot access the file 'C:\results\phone_log.txt' because it is being used by another process.
Out-File:
Line |
100 | … е получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The process cannot access the file 'C:\results\phone_log.txt' because it is being used by another process.
Out-File:
Line |
100 | … е получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The process cannot access the file 'C:\results\phone_log.txt' because it is being used by another process.
Out-File:
Line |
100 | … е получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The process cannot access the file 'C:\results\phone_log.txt' because it is being used by another process.
Out-File:
Line |
100 | … е получен контент"|out-file 'C:\results\phone_log.txt' -enc utf8 -app
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| The process cannot access the file 'C:\results\phone_log.txt' because it is being used by another process.

YuS_2
03-11-2020, 11:59
все равно зависло, скрипт остановился. »
тут ничем не помогу, если виснет именно на iwr, у вас что-то с powershell не так... проверьте с другого компьютера
-timeout 3 означает то, что если даже не получен ответ, будет выдана ошибка через 3 секунды, а -ea 1 приводит к прерыванию по любой, возникающей ошибке в invoke-webrequest...
Кстати, условный блок с выводом информации в лог и командой return, надо вставлять там, где указал я, ибо в секции catch он будет работать только при ошибке, а там где показал я, он будет переходить к следующей итерации, сразу же, если не получен ответ (вернее content) от хоста...
А в catch, надо не заменить, а добавить только это:
"Ошибка на $ip - $_"|out-file error.txt -enc utf8 -app

стал писать дубли в результат »
дубли никак не связаны с этими добавлениями к коду... проверяйте все циклы...
для проверки добавьте такую строку:
...
$ip =$_
$ip|out-file IP.txt -enc utf8 -app
...
и потом проверяйте дубли в файле...

Fors1k
04-11-2020, 02:56
не помогло на "10.16.17.130" все равно зависло, скрипт остановился.»
Попробуйте другой метод запроса:
function iwr2($uri,$timeout){
[void][Reflection.Assembly]::LoadWithPartialName("System.Net.Http")
$net=[Net.Http.HttpClient]::new()
$net.Timeout=[timespan]::FromSeconds($timeout)
try {
$r=$net.getAsync($uri)
$r.Result.Content.ReadAsStringAsync().Result
}
catch [Net.WebException] { throw $_ }
finally{ if($net){$net.Dispose()} }
}
$a = (iwr $_ -timeout 3 -ea 1).content»
try{$a = iwr2 "http://$_" -timeout 3}
catch{"Не удалось выполнить запрос к $_"}

YuS_2
04-11-2020, 07:23
try{$a = iwr2 "http://$_" -timeout 3}
catch{"Не удалось выполнить запрос к $_"} »
Там есть уже try-catch...

Fors1k
04-11-2020, 11:27
Там есть уже try-catch... »
Они разные.
Второй обрабатывает ошибку. Первый же ему ее передает.

YuS_2
04-11-2020, 13:04
Они разные. »
В чем отличие?
Достаточно одного...
about_try_catch_finally (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_try_catch_finally?view=powershell-7)




© OSzone.net 2001-2012