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

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

Ответить
Настройки темы
CMD/BAT - [решено] nslookup для парка ПК

Пользователь


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

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


Изменения
Автор: HFShak
Дата: 05-10-2011
Добрый день!
Народ, помогите пожалуйста написать скрипт.
Есть файл 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

 

Пользователь


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

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


Цитата Iska:
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 = Не найден
...


В чем причина?

Отправлено: 09:24, 11-10-2011 | #11



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

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


Ветеран


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

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


HFShak, погляжу вечером.

Отправлено: 10:05, 11-10-2011 | #12


Ветеран


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

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


HFShak, посмотрел.

Попробуйте добавить:
Код: Выделить весь код
				>nul copy nul "%sStdOut%"
				>nul copy nul "%sStdErr%"
перед:
Код: Выделить весь код
				nslookup.exe "%%i" 1>"%sStdOut%" 2>"%sStdErr%"

Отправлено: 21:05, 11-10-2011 | #13


Пользователь


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

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


Не помогло, тоже самое...
Переменный задал такие:

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

Созданные текстовые файлы текстовые отправил через ЛС.

Отправлено: 09:27, 12-10-2011 | #14


Ветеран


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

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


HFShak, добрался до домена, посмотрел. Проблему подтверждаю.

Добавил принудительное обнуление переменной окружения «sError». Попробуйте теперь так:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sFileSource=%~1
set sLog=%~2

call :GetTemporaryName
set sStdOut=%TemporaryName%

call :GetTemporaryName
set sStdErr=%TemporaryName%

if defined sFileSource (
	if defined sLog (
		if exist "%sFileSource%" (
			>nul copy nul "%sLog%"
			
			for /f "usebackq tokens=*" %%i in ("%sFileSource%") do (
				echo Processing [%%i]...
				set sName=
				set sAddress=
				set sError=
				set bCriticalError=
				
				>nul copy nul "%sStdOut%"
				>nul copy nul "%sStdErr%"
				
				nslookup.exe "%%i" 1>"%sStdOut%" 2>"%sStdErr%"
				
				<"%sStdErr%" set /p sError=
				
				if defined sError (
					if "!sError:~0,3!" equ "***" (
						>>"%sLog%" echo %%i = !sError!
						set bCriticalError=1
					)
				)
				
				if not defined bCriticalError (
					set /a iCount = 0
					for /f "usebackq skip=3 tokens=2 delims=,:	 " %%j in ("%sStdOut%") do (
						set /a iCount += 1
						
						if !iCount! equ 1 set sName=%%j
						if !iCount! equ 2 set sAddress=%%j
					)
					>>"%sLog%" echo !sName! = !sAddress!
				)
			)
			
			if exist "%sStdOut%" del /f /q "%sStdOut%"
			if exist "%sStdErr%" del /f /q "%sStdErr%"
		) else (
			echo File with Names list [%sFileSource%] not found
		)
	) else (
		call :Usage
		exit /b 1
	)
) else (
	call :Usage
	exit /b 1
)

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
:Usage
	echo Usage: %~nx0 ^<Names list^> ^<Log file^>
	exit /b 0
rem ==========================================================================

rem ==========================================================================
rem Функция GetTemporaryName()
rem
rem Серый форум / CMD/BAT: генерация пути для временного файла или папки
rem (http://forum.script-coding.com/viewtopic.php?id=6259)
rem ==========================================================================
:GetTemporaryName
	setlocal enableextensions enabledelayedexpansion

:NextName
	set sTempName=%temp%\temp%random%.tmp

	if exist "%sTempName%" goto :NextName

	set sProcName=%~0

	endlocal & set %sProcName:~4%=%sTempName%
	exit /b 0
rem ==========================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:04, 19-10-2011 | #15


Пользователь


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

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


Спасибо! Все работает.

Отправлено: 12:18, 19-10-2011 | #16



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход