PDA

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


bill_open
03-02-2014, 09:15
Доброго времени форумчане, столкнулся с задачей не подвластной мне, был бы признателен в помощи.
имеется текстовый файл source.csv с информацией типа:
"ip адрес ресурса #1","дата и время доступа к нему"
"ip адрес ресурса #2","дата и время доступа к нему"
......

Требуется с помощью nslookup сопоставить ip c именем домена и получить файл типа:
"доменное имя","ip адрес ресурса #1","дата и время доступа к нему"
.......
если по каким то причинам nslookup не может сопоставить имя, то просто оставить поле пустым.
p.s. Можно как батник, так и скрипт powershell.

Foreigner
03-02-2014, 19:39
bill_open, PowerShell:

Дата фактическая:

$csv = import-csv source.csv -header "ips", "datetime"

$result = @()
foreach ( $ip in $csv.ips ) {

try { $hostname = [net.dns]::gethostbyaddress( $ip ).hostname }
catch { $hostname = $null }

$result += new-object psobject -property @{

hostname = $hostname
ipaddress = $ip
datetime = get-date -u "%x %T"

}}

$result | select hostname,ipaddress,datetime | export-csv result.csv
Дата из source.csv:

$csv = import-csv source.csv -header "ips", "datetime"

$result = @()
for ( $i=0; $i -lt $csv.count; $i++ ) {

try { $hostname = [net.dns]::gethostbyaddress( $csv.ips[$i] ).hostname }
catch { $hostname = $null }

$result += new-object psobject -property @{

ipaddress = $csv.ips[$i]
datetime = $csv.datetime[$i]
hostname = $hostname

}}

$result | select hostname,ipaddress,datetime | export-csv result.csv

bill_open
04-02-2014, 07:35
Ошибка
Не удается индексировать в массив NULL.
C:\Windows\system32\sc.ps1:11 знак:30
+ ipaddress = $csv.ips[ <<<< $i]
+ CategoryInfo : InvalidOperation: (949:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

содержимое source.csv

"213.111.111.111","2014-02-03 08:54:34"
"5.9.6.6","2014-02-03 08:54:30"
........
содержимое ~30000строк

Foreigner
04-02-2014, 07:53
содержимое source.csv »

У source.csv есть хэдеры? Или файл имеет именно такую структуру? УМВР:

> get-content .\result.csv
#TYPE Selected.System.Management.Automation.PSCustomObject
"hostname","ipaddress","datetime"
"unused-213.111.111.111.bilink.ua","213.111.111.111","2014-02-03 08:54:34"
"dev1.add-com.de","5.9.6.6","2014-02-03 08:54:30"

bill_open
05-02-2014, 07:15
шапки нет. Уточняю, данную ошибку он выдает на каждой строке

bill_open
05-02-2014, 07:44
вот другой вариант source.csv, с шапкой.

srcIP,srcPort,destIP,destPort,logTime,devID,devName,duration,sentByte,rcvdByte,direction,protoID,pro to,trans,category,msg,note,idpClazz,idpAct,severity,idpSid,idpCount,spamFirstReIP,ob,obMac,user
"10.100.110.2","50296","213.180.193.3","80","2014-02-03 08:54:34","B0B2BCBB4B89","firewall","88","1382","556","[i=lan1:i=wan1:]","6","http","","Traffic Log","Traffic Log","Traffic Log","","","6","","0","","","","unknown"
"10.100.110.33","50310","5.10.8.68","80","2014-02-03 08:54:30","B0B2BCBB4B89","firewall","70","1161","685","[i=lan1:i=wan2:]","6","http","","Traffic Log","Traffic Log","Traffic Log","","","6","","0","","","","unknown"
................


powershell 2.0


Не удается индексировать в массив NULL.
C:\Windows\system32\sc.ps1:11 знак:30
+ ipaddress = $csv.ips[ <<<< $i];
+ CategoryInfo : InvalidOperation: (0:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

New-Object : Не удается проверить аргумент для параметра "Property". Аргумент пустой или имеет значение NULL. Укажите н
е пустой аргумент, не имеющий значение NULL, после чего повторите выполнение команды.
C:\Windows\system32\sc.ps1:17 знак:45
+ $result += new-object psobject -property <<<< $object
+ CategoryInfo : InvalidData: (:) [New-Object], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.NewObjectCommand

теперь так

Foreigner
05-02-2014, 08:05
Цитата bill_open: вот другой вариант source.csv, с шапкой.
Просто меняешь на нужный хэдер, например время берется из "logTime", а IP из "destIP":

$csv = @( import-csv source.csv )

$result = @()

for ( $i=0; $i -lt $csv.count; $i++ ) {

try { $hostname = [net.dns]::gethostbyaddress( $csv.destip[$i] ).hostname }
catch { $hostname = $null }

$result += new-object psobject -property @{

ipaddress = $csv.destip[$i];
datetime = $csv.logtime[$i];
hostname = $hostname

}}

$result | select hostname,ipaddress,datetime | export-csv result.csv

bill_open
05-02-2014, 14:44
ну ни как(((

Не удается индексировать в массив NULL.
C:\Windows\system32\sc.ps1:12 знак:33
+ ipaddress = $csv.destip[ <<<< $i];
+ CategoryInfo : InvalidOperation: (0:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

пробовал менять местами строки. суть ошибки остается

.......
datetime = $csv.logtime[$i];
ipaddress = $csv.destip[$i];

->

Не удается индексировать в массив NULL.
F:\sc.ps1:12 знак:33
+ datetime = $csv.logtime[ <<<< $i];
+ CategoryInfo : InvalidOperation: (66:Int32) [], RuntimeException
+ FullyQualifiedErrorId : NullArray

так же пробовал убрать все кавычки, ошибка осталась(((

Kazun
05-02-2014, 16:02
Import-Csv source.csv -Header IP,Date |
Select @{n="Domain";e={try{[net.dns]::GetHostEntry($_.ip).HostName} catch {"NotFound"}}},IP,Date | Export-Csv result.csv -NoTypeInformation

А в вашем, коде исправьте $csv.destip[$i] на $csv[$i].destip и $csv.logtime[$i] на $csv[$i].logtime

bill_open
06-02-2014, 10:16
Import-Csv source.csv -Header IP,Date |
Select @{n="Domain";e={try{[net.dns]::GetHostEntry($_.ip).HostName} catch {"NotFound"}}},IP,Date | Export-Csv result.csv -NoTypeInformation

Этот код берет только первые два столбца-переделал под него source. Спасибо!

А в вашем, коде исправьте $csv.destip[$i] на $csv[$i].destip и $csv.logtime[$i] на $csv[$i].logtime
столбец hostname получается пустой((( но все равно огромное спасибо, что откликнулись!

#TYPE Selected.System.Management.Automation.PSCustomObject
"hostname","ipaddress","datetime"
,"93.158.134.3","2014-02-03 08:54:34"
,"93.158.134.3","2014-02-03 08:54:30"
........

Kazun
06-02-2014, 10:38
$hostname = [net.dns]::gethostbyaddress( $csv.ips[$i] ).hostname - Поправьте здесь с $csv.ips[$i] на $csv[$i].ips




© OSzone.net 2001-2012