|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] nslookup для парка ПК |
|
|
CMD/BAT - [решено] nslookup для парка ПК
|
Пользователь Сообщения: 144 |
Добрый день!
Народ, помогите пожалуйста написать скрипт. Есть файл 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 ... |
|
Отправлено: 16:59, 05-10-2011 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, попробуйте так:
|
Отправлено: 18:36, 05-10-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать sFileSource=%userprofile%\desktop\pc.txt
sLog=%userprofile%\desktop\report.txt Я правильно задал переменные?, никакие знаки "%" не упустил? Программа подвисает сильно во время выполнения, в процесса появляется очень много cmd.exe. Завершил задачу, т.к. начали появлятся диалоговые окна с ошибками cmd. Файл report.txt заполняется так: PCNAME1 = PCNAME2 = PCNAME3 = ... После равно не появляется ip. |
Отправлено: 09:19, 06-10-2011 | #3 |
Сообщения: 53482
|
Профиль | Отправить PM | Цитировать Цитата HFShak:
|
|
Отправлено: 09:24, 06-10-2011 | #4 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать Блин именно 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. |
|
Отправлено: 09:25, 06-10-2011 | #5 |
Сообщения: 53482
|
Профиль | Отправить PM | Цитировать HFShak, попробуйте в скрипте заменить Addresses на Address.
|
Отправлено: 09:39, 06-10-2011 | #6 |
Пользователь Сообщения: 144
|
Профиль | Отправить PM | Цитировать В скрипте какая-то ошибка:
C:\>setlocal enableextensions enabledelayedexpansion C:\>set sFileSource=C:\pc.txt C:\>set sLog=C:\report.txt C:\>if defined sFileSource (if defined sLog (if exist "C:\pc.txt" (copy nul "C:\report.txt" 1>nul for /F "usebackq tokens=*" %i in ("C:\pc.txt") do ( set sName= set sAddress= for /F "tokens=1,2* delims=,: " %j in ('nslookup "%i" 2>&1 | findstr.exe /r /i /c:"Name: " /c:"Address: " /c:"\*\*\* "') do (if "%j" EQU "***" (set s%j=%k %l ) else (set s%j=%k ) ) (if defined sName (echo !sName! = !sAddress! ) else (echo %i = !s***! ) ) 1>>"C:\report.txt")) else (echo File with Names list [C:\pc.txt] not found ) ) else (call :Usage exit /b 1) ) else (call :Usage exit /b 1) C:\>( set sName= set sAddress= for /F "tokens=1,2* delims=,: " %j in ('nslookup "PCNAME1" 2>&1 | findstr.exe /r /i /c:"Name: " /c:"Address: " /c:"\*\*\* "') do (if "%j" EQU "***" (set s%j=%k %l ) else (set s%j=%k ) ) (if defined sName (echo !sName! = !sAddress! ) else (echo PCNAME1 = !s***! )) 1>>"C:\report.txt") C:\>(if "Address" EQU "***" (set sAddress=10.4.27.7 ) else (set sAddress=10.4.27.7 ) ) C:\>(if "Address" EQU "***" (set sAddress=10.1.92.228 ) else (set sAddress=10.1.92.228 ) ) C:\>( set sName= set sAddress= for /F "tokens=1,2* delims=,: " %j in ('nslookup "PCNAME2" 2>&1 | findstr.exe /r /i /c:"Name: " /c:"Address: " /c:"\*\*\* "') do (if "%j" EQU "***" (set s%j=%k %l ) else (set s%j=%k ) ) (if defined sName (echo !sName! = !sAddress! ) else (echo PCNAME2 = !s***! )) 1>>"C:\report.txt") C:\>(if "Address" EQU "***" (set sAddress=10.4.27.7 ) else (set sAddress=10.4.27.7 ) ) C:\>(if "Address" EQU "***" (set sAddress=10.1.92.127 ) else (set sAddress=10.1.92.127 ) ) C:\>( set sName= set sAddress= for /F "tokens=1,2* delims=,: " %j in ('nslookup "PCNAME3" 2>&1 | findstr.exe /r /i /c:"Name: " /c:"Address: " /c:"\*\*\* "') do (if "%j" EQU "***" (set s%j=%k %l ) else (set s%j=%k ) ) (if defined sName (echo !sName! = !sAddress! ) else (echo PCNAME3 = !s***! ) ) 1>>"C:\report.txt") C:\>(if "***" EQU "***" (set s***=srv.domain.ru не удалось ) else (set s***=srv.domain.ru ) ) main C:\>(if "Address" EQU "***" (set sAddress=10.4.27.7 ) else (set sAddress=10.4.27.7 ) ) C:\>( set sName= set sAddress= for /F "tokens=1,2* delims=,: " %j in ('nslookup "PCNAME4" 2>&1 | findstr.exe /r /i /c:"Name: " /c:"Address: " /c:"\*\*\* "') do (if "%j" EQU "***" (set s%j=%k %l ) else (set s%j=%k ) ) (if defined sName (echo !sName! = !sAddress! ) else (echo PCNAME4 = !s***! ) ) 1>>"C:\report.txt") C:\>(if "***" EQU "***" (set sAddress=10.4.27.7 ) else (set sAddress=10.4.27.7 ) ) C:\>(if "Address" EQU "***" (set sAddress=10.1.92.23 ) else (set sAddress=10.1.92.23 ) ) У 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 |
Отправлено: 10:40, 06-10-2011 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Petya V4sechkin:
HFShak, пакетный файл весьма критично зависит от формата вывода утилиты. Я ориентировался на вывод «nslookup.exe» из комплекта Windows XP SP3. При разработке использовал перечень общеизвестных доменных имён (не локальных!) и несколько заведомо несуществующих. Посему проделайте следующее: |
|
Отправлено: 13:00, 06-10-2011 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать HFShak, я был несколько ошарашен, когда увидел вывод Вашей «nslookup.exe»: в stdout в Ansi, в stderr — в OEM.
Попробуйте очередной вариант: |
Отправлено: 23:21, 10-10-2011 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:22, 11-10-2011 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Скрипт копирования файла с парка компьтеров. | exo | Скриптовые языки администрирования Windows | 4 | 14-09-2009 15:24 | |
nslookup | Aleksey Potapov | Microsoft Windows NT/2000/2003 | 87 | 12-08-2008 18:44 | |
Подбор - [решено] Легализация парка + покупка новых | shilnik | Лицензирование продуктов Microsoft | 1 | 26-01-2008 13:36 | |
Приобретение - лицензирование небольщого компьютерного парка | Frose | Лицензирование продуктов Microsoft | 2 | 14-01-2008 08:34 | |
Программа для учета парка ПК | flatline | Программное обеспечение Windows | 5 | 10-03-2007 22:33 |
|