![]() |
nslookup для парка ПК
Добрый день!
Народ, помогите пожалуйста написать скрипт. Есть файл pc.txt , в котором содержутся имена компьютеров. Содержание pc.txt: NAMEPC1 NAMEPC2 NAMEPC3 ... В текстовом файле на каждой строке по одному имени ПК, имена не содержат общих элементов и длинна имен может различаться по кол-ву символов. Нужно написать скрипт, который для кажного ПК выполняет команду nslookup. Все собранные данные записываются с один текстовый файл report.txt, желательно в таком порядке: NAMEPC1 = 10.4.27.7 NAMEPC2 = *** srv.domain.ru не удалось найти NAMEPC2: Non-existent domain NAMEPC3 = 10.12.16.14 ... |
HFShak, попробуйте так:
|
sFileSource=%userprofile%\desktop\pc.txt
sLog=%userprofile%\desktop\report.txt Я правильно задал переменные?, никакие знаки "%" не упустил? Программа подвисает сильно во время выполнения, в процесса появляется очень много cmd.exe. Завершил задачу, т.к. начали появлятся диалоговые окна с ошибками cmd. Файл report.txt заполняется так: PCNAME1 = PCNAME2 = PCNAME3 = ... После равно не появляется ip. |
Цитата:
|
Блин именно nslookup.cmd )
Переименовал в 123.cmd, скрип отработал, файл почти правильно заполнился, т.е.: PCNAME1 = PCNAME2 = PCNAME3 = srv.domain.ru *Ґ г¤ «®бм * ©вЁ PCNAME3: Non-existent domain PCNAME4 = srv.domain.ru *Ґ г¤ «®бм * ©вЁ PCNAME4: Non-existent domain PCNAME5 = srv.domain.ru *Ґ г¤ «®бм * ©вЁ PCNAME5: Non-existent domain PCNAME6 = srv.domain.ru *Ґ г¤ «®бм * ©вЁ PCNAME6: Non-existent domain ... Не прописывается ip адрес у тех ПК, которые реализовываются на dns. |
HFShak, попробуйте в скрипте заменить Addresses на Address.
|
В скрипте какая-то ошибка:
Код:
C:\>setlocal enableextensions enabledelayedexpansion У PCNAME1 ip адрес = 10.1.92.22 У PCNAME2 ip адрес = 10.1.92.127 У PCNAME3 ip адрес = не удалось У PCNAME4 ip адрес = 10.1.92.23 В файле он записывает так: PCNAME1 = PCNAME2 = PCNAME3 = srv.domain.ru *Ґ г¤*«®бм **©вЁ PCNAME3: Non-existent domain PCNAME4 = srv.domain.ru *Ґ г¤*«®бм **©вЁ PCNAME4: Non-existent domain |
Цитата:
HFShak, пакетный файл весьма критично зависит от формата вывода утилиты. Я ориентировался на вывод «nslookup.exe» из комплекта Windows XP SP3. При разработке использовал перечень общеизвестных доменных имён (не локальных!) и несколько заведомо несуществующих. Посему проделайте следующее: |
HFShak, я был несколько ошарашен, когда увидел вывод Вашей «nslookup.exe»: в stdout в Ansi, в stderr — в OEM.
Попробуйте очередной вариант: |
|
Цитата:
Все записывает правильно, до того момента пока не находит ПК в домене. После этого он всегда пишет "ПК не найден в домене".... Т.е.: pc.txt: NAMEPC1 NAMEPC2 NAMEPC3 NAMEPC1 ... Out.txt: NAMEPC1 = 10.1.1.15 NAMEPC2 = 10.1.1.23 NAMEPC3 = Не найден NAMEPC1 = Не найден ... В чем причина? |
HFShak, погляжу вечером.
|
HFShak, посмотрел.
Попробуйте добавить: Код:
>nul copy nul "%sStdOut%" Код:
nslookup.exe "%%i" 1>"%sStdOut%" 2>"%sStdErr%" |
Не помогло, тоже самое...
Переменный задал такие: set sFileSource=%userprofile%\desktop\pc.txt set sLog=%userprofile%\desktop\Out.txt call :GetTemporaryName set sStdOut=%userprofile%\desktop\StdOut.txt call :GetTemporaryName set sStdErr=%userprofile%\desktop\StdErr.txt Созданные текстовые файлы текстовые отправил через ЛС. |
HFShak, добрался до домена, посмотрел. Проблему подтверждаю.
Добавил принудительное обнуление переменной окружения «sError». Попробуйте теперь так: |
Спасибо! Все работает.
|
Время: 08:27. |
Время: 08:27.
© OSzone.net 2001-