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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - nslookup и список адресов

Ответить
Настройки темы
CMD/BAT - nslookup и список адресов

Новый участник


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

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


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

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

Отправлено: 09:15, 03-02-2014

 

Ветеран


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

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


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

Последний раз редактировалось Foreigner, 03-02-2014 в 21:16.

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

Отправлено: 19:39, 03-02-2014 | #2



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

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


Новый участник


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

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


Ошибка
Код: Выделить весь код
Не удается индексировать в массив 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строк

Отправлено: 07:35, 04-02-2014 | #3


Ветеран


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

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


Цитата bill_open:
содержимое 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"

Отправлено: 07:53, 04-02-2014 | #4


Новый участник


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

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


шапки нет. Уточняю, данную ошибку он выдает на каждой строке

Отправлено: 07:15, 05-02-2014 | #5


Новый участник


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

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


вот другой вариант source.csv, с шапкой.
Код: Выделить весь код
srcIP,srcPort,destIP,destPort,logTime,devID,devName,duration,sentByte,rcvdByte,direction,protoID,proto,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
теперь так

Последний раз редактировалось bill_open, 05-02-2014 в 07:45. Причина: дописал


Отправлено: 07:44, 05-02-2014 | #6


Ветеран


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

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


Цитата 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

Отправлено: 08:05, 05-02-2014 | #7


Новый участник


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

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


ну ни как(((
Код: Выделить весь код
Не удается индексировать в массив 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
так же пробовал убрать все кавычки, ошибка осталась(((

Отправлено: 14:44, 05-02-2014 | #8


Ветеран


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

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


Код: Выделить весь код
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
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:02, 05-02-2014 | #9


Новый участник


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

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


Код: Выделить весь код
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"
........

Отправлено: 10:16, 06-02-2014 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - nslookup и список адресов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
V. 5.5/2000/2003 - Список всех адресов Exchange 2003 morozov_s_v Microsoft Exchange Server 7 21-05-2011 00:53
V. 2010 - [решено] Не работает белый список ip-адресов VladDV Microsoft Exchange Server 2 07-10-2010 02:50
Почта - список адресов KpaH4iTo Программное обеспечение Windows 1 25-06-2009 17:23
Интернет - [решено] Растолкуйте, pls, непонятку с разрешением IP адресов в XP (ping, nslookup) MinimumLaw Microsoft Windows 2000/XP 5 24-10-2007 16:19
Интернет - [решено] Как удалить список адресов из списка? Kentuky Microsoft Windows 2000/XP 2 26-09-2007 22:29




 
Переход