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

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

Ответить
Настройки темы
CMD/BAT - [решено] Как вывести в лог значения из arp -a

Аватара для root221

Старожил


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

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


Изменения
Автор: root221
Дата: 13-07-2011
Вобщем такая задача, надо чтобы собиралась информация

из arp -a

и в лог записывались, только два значения.

Код: Выделить весь код
IP Машины     Мак адрес


10.0.0.1      001BF6F69B13
10.0.0.91     00DD105979F5
10.0.0.100    00BF1327D4D3
10.0.0.190    001FF6B41BC5

и.т.д

Отправлено: 11:40, 11-07-2011

 

Аватара для root221

Старожил


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

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


спасибо

ещё проблемка

например

меняю в списке MAC адрес, в ручную

Код: Выделить весь код
12.34.56.78   1234567890
на

Код: Выделить весь код
12.34.56.78   0987654321
запускаю скрипт а мак не изменяется.

в списке arp -a как должно быть, только в логе он не изменяется


в кеше арп он написан так:

Код: Выделить весь код
12.34.56.78   1234567890

Последний раз редактировалось root221, 28-02-2012 в 08:42.


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



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

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


Googler


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

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


Цитата root221:
скрипт меняет мак адрес, если из арп кеша он не совпадает, с маком адресом из списка »
само собой, откуда скрипту знать что это кривой MAC, а не MAC выключенной машины?
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:59, 13-07-2011 | #12


Аватара для root221

Старожил


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

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


эта машина включена, в арп кеше, мак адрес другой.

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

Последний раз редактировалось root221, 13-07-2011 в 11:12.


Отправлено: 11:04, 13-07-2011 | #13


Аватара для root221

Старожил


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

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


просто мне нужно было если например

та машина у которой адрес был 12.34.56.78 1234567890

изменила свой ip на 12.34.56.79

то старая запись ip,mac удалялась, если мак совпал, с новой записью из кеша.

И записывалась новая 12.34.56.79 1234567890

Отправлено: 11:19, 13-07-2011 | #14


Googler


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

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


root221, вроде понял о чем речь, исправил (#17)
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:25, 13-07-2011 | #15


Аватара для root221

Старожил


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

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


да действительно всё работает.

Отправлено: 11:39, 13-07-2011 | #16


Аватара для root221

Старожил


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

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


Как после окончания всех записей в лог файл, вывести в консоль список, только тех компьютеров, которые присутствуют только в списке
Код: Выделить весь код
%LOG%
но их небыло в списке arp/a кэша, в момент выполнения скрипта #17.

Пример, вывода в консоль:

Код: Выделить весь код
Этих компьютеров из вашего списка %LOG%, небыло в списке кэша arp/a, в момент выполнения скрипта.

Эти компьютеры из списка %LOG%, отсутствуют в кэше arp/a:

IP - 002D8F9B5A2F

Отправлено: 01:56, 15-07-2011 | #17


Googler


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

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


Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
::путь\имя лог-файла
set LOG=arp.log
set ARP=ON
::сохранение IP/MAC в переменных $$*
for /f "tokens=1,2" %%a in (
'"(arp/a&echo 0 000000000000&type "%LOG%")|findstr/brc:" *[0-9]""') do (
  if "%%a"=="0" set "ARP=OFF"
  set "$a=%%a        "& set "$a=!$a:~,15!"& set "$b=%%b"& set "$="
  for %%x in ("-=" "a=A" "b=B" "c=C" "d=D" "e=E" "f=F") do set "$b=!$b:%%~x!"
  for %%x in (00!$a:.^= 00!) do set "$x=%%x"& set "$=!$!!$x:~-3!"
  if not "!$b!"=="000000000000" if not defined $$!$! if not defined $_!$b! (
    set "$_!$b!=!ARP!"& set "$$!$!=!$a! !$b!"))
::вывод в файл
(echo:IP Машины       Мак адрес& echo:
 for /f "tokens=1* delims==" %%x in ('set $$') do echo %%y
)>"%LOG%"
::вывод расхождений в консоль
echo Эти компьютеры из списка "%LOG%" отсутствуют в кэше ARP:& echo:
for /f "tokens=1,2 usebackq" %%a in ("%LOG%") do (if "!$_%%b!"=="OFF" echo %%a - %%b
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:51, 15-07-2011 | #18


Аватара для root221

Старожил


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

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


как сделать ещё конфиг для переменных %LOG% и %ARP%

чтобы настройки переменных хранились в отдельном файле конфигурации например config.cfg

Код: Выделить весь код
LOG=arp.log
ARP=ON

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


Ветеран


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

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


root221,
Если формат конфига: одна строчка -- имя_переменной=значение, то просто прочитать из батника:
Код: Выделить весь код
for /f "tokens=*" %%i in (config.cfg) do 1>nul set "%%i"
После этого станут доступны переменные из файла
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:46, 15-07-2011 | #20



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Quake 3 server не максимально использует сеть. naxaH Игры 0 07-06-2011 13:54
[решено] Как получить MAC -адрес сетевой карты на удаленном компьютере garanov AutoIt 2 16-12-2009 16:07
Прочее - как получить доступ в городскую сеть sergchopper Сетевые технологии 3 11-01-2009 12:35
Как быстро просканировать сеть? RasKolbas Сетевые технологии 5 25-03-2008 16:02
Как запретить сканирующему сеть получить информацию обо мне? pazdak Microsoft Windows NT/2000/2003 9 03-04-2004 01:27




 
Переход