Показать полную графическую версию : 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
так же пробовал убрать все кавычки, ошибка осталась(((
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"
........
$hostname = [net.dns]::gethostbyaddress( $csv.ips[$i] ).hostname - Поправьте здесь с $csv.ips[$i] на $csv[$i].ips
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC