Назад | Перейти на главную страницу

Пакетный файл для МАССОВОЙ группы ping компьютеров в сети по имени, проверка ответа и разрешение имени хоста

Итак, у меня есть список из 5000 компьютеров в моей сети Windows Active Directory, которые могут существовать, а могут и не существовать (я знаю, не спрашивайте ... Мне нужно знать для проекта, и, конечно же, небольшая помощь от сетевых специалистов , и так много ошибок в данных, которые они мне дают)

Имена компьютеров находятся в пределах от SAT1 до SAT5000. Однако некоторые из них могли быть обновлены до новой ОС и переименованы. поэтому в этом случае я хотел бы также определить новое имя.

Интересно, может ли у кого-нибудь быть сценарий, который, учитывая текстовый файл, содержащий список имен компьютеров, для каждого: 1. ping компьютер, чтобы проверить его существование (да, он должен быть включен, я знаю)
2. после получения ip от 1-го пинга выполните команду ping -a, чтобы получить имя хоста
3. записать результаты в текстовый файл

(Еще лучше ... можно ли каким-то образом разделить исходный файл на несколько и создать несколько командных файлов для одновременного запуска, чтобы снизить медленность синхронного пинга 5000 машин ??)

Обновить

Эта статья, кажется, в некоторой степени связана с тем, что я ищу: http://www.enterpriseitplanet.com/networking/features/article.php/1571771

Обновление 2

Вот что у меня получилось:

@echo off
rem del output.txt
rem Loop thru list of computer names in file specified on command-line

for /f %%i in (%1) do call :check_machine %%i
goto end

:check_machine

rem Check to see if machine is up.
echo %1
ping -n 2 %1 >NUL 2>NUL
if errorlevel 1 goto down

rem Reverse-lookup machine name and report
  for /f "usebackq tokens=2,3" %%d in (`ping -n 1 -a %1 ^| find "Pinging "`) do echo %1, %%d,%%e >> output.txt
goto end

:down
  rem Report machine down
  echo %1 >> output.txt

:end

И вывод в таком формате:

SAT10 
SAT1209 
SAT601, CGY2601.na.sat.com,[110.3.111.70] 
SAT3592, CGY3592.na.sat.com,[110.0.237.45] 

Если вы разделите список компьютеров на несколько файлов меньшего размера, вы можете выполнить пинг асинхронно следующим образом:

del output.txt
start MassPing.cmd Computers1.txt
start MassPing.cmd Computers2.txt
start MassPing.cmd Computers3.txt
start MassPing.cmd Computers4.txt
start MassPing.cmd Computers5.txt
start MassPing.cmd Computers6.txt

Вот вам командный файл:

@echo off
rem Loop thru list of computer names specified on command-line
for /f %%i in (%1) do call :check_machine %%i
goto end

:check_machine

rem Check to see if machine is up.
ping -n 2 %1 >NUL 2>NUL
if errorlevel 1 goto down

rem Reverse-lookup machine name and report
for /f "usebackq tokens=2" %%d in (`ping -n 1 -a %1 ^| find "Pinging"`) do echo %1:Up:%%d
goto end

:down
rem Report machine down
echo %1:Down

:end

Передайте ему текстовый файл со списком имен компьютеров в нем, и он будет PING их (2 попытки - вы можете увеличить это, увеличив число после "-n" в 1-й командной строке PING), и если он получит ответ выполните обратный поиск имени. Он возвращает результаты как:

computer-name-1:Up:name-it-resolved-to
computer-name-2:Down
computer-name-3:Up:name-it-resolved-to
...

Чтобы запустить несколько параллельно, просто создайте несколько текстовых файлов с разными списками имен компьютеров и запустите несколько копий параллельно.

Быстро и грязно спасает положение.

Вам действительно нужно пинговать? Учетная запись компьютера будет автоматически менять свой пароль каждые 30 дней. На функциональном уровне 200/2003/2008 вы можете использовать dsquery computer -stalepwd X где X - количество дней с момента последней смены пароля. Этот процесс обычно автоматизируется путем перемещения учетных записей компьютеров, которые реагируют на это, в «СТАРУЮ» OU, а затем через 30–90 дней они автоматически удаляются, если пароль все еще не изменился.

Вы также можете использовать Nmap для сканирования:

nmap -sn -PE -oG scan.txt 192.168.1.1 192.168.2.0/24

Цитата из справочной страницы:

-sn: Ping Scan - disable port scan
   The default host discovery done with -sn consists of an ICMP echo request,
   TCP SYN to port 443, TCP ACK to port 80, and an ICMP timestamp request
   by default.

-oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3,
   and Grepable format, respectively, to the given filename.

-PE; -PP; -PM (ICMP Ping Types) .
   In addition to the unusual TCP, UDP and SCTP host discovery types discussed
   previously, Nmap can send the standard packets sent by the ubiquitous ping
   program. Nmap sends an ICMP type 8 (echo request) packet to the target IP
   addresses, expecting a type 0 (echo reply) in return from available hosts.
   [...] Use the -PE option to enable this echo request behavior.

scan.txt будет выглядеть примерно так:

# Nmap 5.50 scan initiated Fri Aug 19 17:59:59 2011 as: nmap -vv -sn -PE -oG /tmp/scan.txt  192.168.1.1 192.168.2.0/24
# Ports scanned: TCP(0;) UDP(0;) SCTP(0;) PROTOCOLS(0;)

Host: 192.168.1.1 ()    Status: Down
Host: 192.168.2.0 (www.dummy.example.org)   Status: Up
Host: 192.168.2.1 (www.foo.example.org) Status: Down
...
# Nmap done at Fri Aug 19 18:03:26 2011 -- NNN IP addresses (1 host up) scanned in 4.02 seconds

Другой метод, который может сработать для вас, - это заставить «Сетевиков» выдать аренду DHCP-сервера. Проверка связи с 5000 компьютеров займет некоторое время.

У меня была аналогичная потребность сделать это для нескольких тысяч компьютеров, и я разработал сценарий PowerShell, который позаботился об этом. Этот сценарий выполняет несколько фоновых заданий одновременно, чтобы ускорить процесс проверки связи, и может дополнительно выполнять DnsLookup для поиска IP-адреса и полного доменного имени. Производительность будет варьироваться в зависимости от того, сколько тайм-аутов встречается, но у меня сценарий был завершен для более чем 12000 хостов всего за 15 минут.

Скрипт слишком велик для публикации здесь, но вы можете увидеть (и скачать) его здесь:

http://poshtips.com/2011/03/28/bgping-a-high-performance-bulk-ping-utility/

Возможно, это не совсем то, что вы имели в виду, но я использую один инструмент для таких целей: Networkview. Он покажет больше, чем вы просите, и будет стоить несколько долларов, но того стоит. Для разового использования вы можете просто использовать его в оценочном режиме.

То, что ты пытаешься сделать, неправильно, мой друг.

Во-первых, у вас есть корень, и этот корень находится в Active Directory. поэтому убедитесь, что старение установлено правильно, и что записи DNS настроены для правильной очистки.

чем получить список со всеми вашими IP-адресами в DNS и пинговать их в Active Directory.

если ip неизвестен, значит компьютер мертв, вы можете отключить его.

это трудный путь.

легкий путь труден:

запустите это в командной строке, но убедитесь, что вы являетесь администратором домена и в вашей версии Windows установлены инструменты поддержки Windows. Вы можете загрузить их с веб-сайта Microsoft или установить с любого Windows XP или сервера 2003, в зависимости от того, на какой ОС вы работаете.

dsquery компьютер последний вход в систему

возможно, вам понадобится что-то вроде dsquery computer last logon> c: \ deadpc.txt сейчас, прежде чем вы начнете всю судебную экспертизу с этим. dsquery computer -disabled> c: \ disabledpc.txt сначала очистите их

после того, как вы уберете большинство из них, вы можете проверить дубликат SID