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

Компьютерный форум 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

 

Googler


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

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


Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
(
echo:ip              mac
echo:
for /f "tokens=1,2" %%a in ('arp -a^|findstr/brc:" *[0-9]"') do (
 set "$a=%%a        "& set "$b=%%b"
 echo !$a:~,15! !$b:-=!
))>arp.log

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:50, 11-07-2011 | #2



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

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


Googler


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

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


Цитата root221:
сейчас наблюдается такая картина »
да нет, код из поста #2 у меня даёт ровные столбцы
Цитата root221:
Буквы которые в мак адресе были большими »
Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
(echo:IP Машины       Мак адрес
 echo:
 for /f "tokens=1,2" %%a in ('arp -a^|findstr/brc:" *[0-9]"') do (
  set "$a=%%a        "& set "$b=%%b"
  for %%x in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F") do set "$b=!$b:%%~x!"
  echo !$a:~,15! !$b:-=!
))>arp.log

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

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


Googler


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

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


Цитата root221:
в список добавлялся новый компьютер если тот появился в arp -a »
Цитата root221:
если например в списке есть адрес с нулевым мак адресом то его в список не заносить »
Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
::-------------
set LOG=arp.log
::-------------
if not exist "%LOG%" (echo:IP Машины       Мак адрес&echo:)>"%LOG%"
(for /f "tokens=1,2" %%a in ('arp -a^|findstr/brc:" *[0-9]"') do (set "$b=%%b"
 set "$a=%%a        "& set "$a=!$a:~,15!"
 for %%x in ("-=" "a=A" "b=B" "c=C" "d=D" "e=E" "f=F") do set "$b=!$b:%%~x!"
 if not "!$b!"=="000000000000" findstr/ei "!$b!" "%LOG%">nul||echo !$a! !$b!
))>>"%LOG%"
Цитата root221:
в этойже последовательности »
тогда уже не "добавить" (в конец текущего файла), а "вставить" в середину списка, что потребует копирования, удаления и повторного создания всего файла... например, путём сортировки (SORT /?)

Цитата root221:
и так сойдёт >
не сойдет, так как выравнивание делает целая строка кода (выделена синим):
1) добавление в конец IP-адреса 8 пробелов,
2) обрезание строки по длине 15 символов.

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:25, 12-07-2011 | #4


Googler


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

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


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

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум


Последний раз редактировалось amel27, 12-07-2011 в 08:43. Причина: комменты

Это сообщение посчитали полезным следующие участники:

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


Googler


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

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


Цитата root221:
можно както зделать чтобы он записывал все данные из лога в переменную
и потом просто записывал все данные занова с добавлением новых »
в #8 так и сделано - добавил комментарий

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

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


Googler


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

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


Цитата root221:
создаётся не попорядку »
сортировка сделана тупо по IP-адресам, а как надо?
...можете проверить сами (без учета заголовка):
Код: Выделить весь код
sort ARP.LOG

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум

Это сообщение посчитали полезным следующие участники:

Отправлено: 07:29, 12-07-2011 | #7


Аватара для root221

Старожил


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

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


Код: Выделить весь код
10.0.0.1     001234567890
10.0.0.108  001234567890
10.0.0.11    001234567890
10.0.0.111   001234567890
Код: Выделить весь код
а надо

 10.0.0.1 001234567890
 10.0.0.2 001234567890
 10.0.0.3 001234567890
 10.0.0.4 001234567890

и пошло поехало
последние цифры ip адреса хотелось бы чтобы шли по порядку, как показанно в примере выше

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


Отправлено: 07:30, 12-07-2011 | #8


Googler


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

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


root221, о том и речь, что сортировка может быть разной:
Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
::путь\имя лог-файла
set LOG=arp.log
::сохранение IP/MAC в переменных $$*
for /f "tokens=1,2" %%a in ('"(type "%LOG%"&arp/a)|findstr/brc:" *[0-9]""') do (
  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!"
  if not "!$b!"=="000000000000" (for %%x in (00!$a:.^= 00!) do set "$x=%%x"& set "$=!$!!$x:~-3!"
  set "$$!$!=!$a! !$b!"))
::вывод в файл
(echo:IP Машины       Мак адрес& echo:
 for /f "tokens=1* delims==" %%x in ('set $$') do echo %%y
)>"%LOG%"
P.S. При смене IP машины вариант #8 корректно исправит адрес для заданного MAC в списке, в этом варианте будет добавлена новая запись, старая будет висеть пока адрес не займёт другой хост. Так как 1-й скрипт отталкивается от MAC, второй - от IP.

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум


Последний раз редактировалось amel27, 12-07-2011 в 08:32.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:21, 12-07-2011 | #9


Googler


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

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


Цитата root221:
если мак адрес машины изменился»
может IP адрес?
Код: Выделить весь код
@echo off
SETLOCAL EnableDelayedExpansion
::путь\имя лог-файла
set LOG=arp.log
::сохранение IP/MAC в переменных $$*
for /f "tokens=1,2" %%a in ('"(arp/a&type "%LOG%")|findstr/brc:" *[0-9]""') do (
  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!=.& set "$$!$!=!$a! !$b!"))
::вывод в файл
(echo:IP Машины       Мак адрес& echo:
 for /f "tokens=1* delims==" %%x in ('set $$') do echo %%y
)>"%LOG%"

-------
Как сообщить о том, что моя проблема решена?
не оказываю техподдержку через ПМ/ICQ/Mail - для этого есть форум


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

Это сообщение посчитали полезным следующие участники:

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



Компьютерный форум 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




 
Переход