Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
GREENX5
76 / 4 / 0
Регистрация: 20.08.2013
Сообщений: 27
1

Простенький сканер шлюзов и клиентов локальной сети

21.08.2013, 01:56. Просмотров 4576. Ответов 5
Метки нет (Все метки)

Ну вот, состряпал простенький сканер шлюзов и клиентов локальной сети, мож кому пригодится в готовом виде, смотрит под каким адресом зареген, под какой шлюз, и пингует всех (задается - "до", сейчас 30) клиентов в 255.255.255.0, выделяя шлюзы, проверив их на отклик от MS DNS (задается) предварительно создав маршрут 8.8.8.8-255.255.255.255-проверяемый шлюз", в конце итерации заменяет маршрут, в конце работы удаляет, выводит отчет списком по мере работы. Если запущен без присвоенного IP - ждет с паузами 5 сек. Никаких файлов не пишет. Загрузка i3-проца 3%. Править не блокнотом. Под русский Win7.
Не хватает на мой взгляд остановки процесса ESC-ом (может быть кто не поленится - допишет, в коде есть метка места), сравнения скоростей шлюзов и приглашения перескочить на самый шустрый пропиской маршрута "0.0.0.0.0-0.0.0.0.0-новый шлюз" (вдруг кто допишет, а нет - сам когда-н. допишу). Есть желание при случае прощупывать бесплатные сети (в Турции месяц назад в отеле ручками пришлось - у точки DHCP упал).

Советы, замечания, приветствуются, это основа для нужного мне алгоритма резервирования инет-подключения вторым шлюзом.
0
Вложения
Тип файла: rar GATEscanner.rar (1.2 Кб, 230 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 01:56
Ответы с готовыми решениями:

Сканер локальной сети
Всем привет! Может кто-нибудь сделать bat-файл для сканирования ПК в локальной сети с 2-строчным...

Сканер антивирусов в локальной сети
Есть одна задача лично моя инициатива, хотя возможно что буду за это наказан...)))) задача такая:...

Сканер IP - Адресов, Порт - сканер (в локальной сети)
Доброе время суток) Написана программа для сканирования портов (указал диапазон 5900 - 5906), на...

Быстрый сканер локальной сети
Всем привет, я уже задавал подобный вопрос, но тот сканер получился достаточно медленным. Поэтому...

Сканер локальной сети, NetServerEnum!
Здравствуйте. нужно мне организовать поиск файлов в локальной сети. Соответственно для этого...

5
Borodа
98 / 92 / 8
Регистрация: 07.08.2013
Сообщений: 299
21.08.2013, 02:23 2
А чего было не запостить сюда код?
0
GREENX5
76 / 4 / 0
Регистрация: 20.08.2013
Сообщений: 27
21.08.2013, 04:21  [ТС] 3
Спецсимволы не выкладываются, код корявый будет.
0
Dragokas
Эксперт WindowsАвтор FAQ
17106 / 7161 / 861
Регистрация: 25.12.2011
Сообщений: 10,955
Записей в блоге: 16
21.08.2013, 17:57 4
Это развернутый оригинал кода от GREENX5 с потерей спецсимволов.
Код запускать из архива в посте № 1.

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
@echo off
Color 1f
CHCP 866 >nul
Setlocal EnableExtensions EnableDelayedExpansion
echo Сканер шлюзов и клиентов
echo=========================
 
:: задать до какого адреса искать (не более 254)
set /a IPto=30
:: задать адрес для внешнего пинга
set PINGSITE=8.8.4.4
 
<Nul Set /P Echo=назначен IP 
 
:startt
set "i=0.0.0.0" & set "j="
for /f "tokens=4" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  if not defined j for %%b in (%%a) do set "i=%%b" & set "j=1")
 set "IP=%i%"
  for /f "tokens=1-4 delims=. " %%A in ("%IP%") do (
    set ok1=%%A
    set ok2=%%B
    set ok3=%%C
)
    set IPP=%ok1%.%ok2%.%ok3%.
Call :StrOne %IP%
if %IP%==0.0.0.0 ping -n 5 127.0.0.1 >nul & goto startt
set "g=0.0.0.0" & set "j="
for /f "tokens=3" %%a in ('route print^|findstr 0.0.0.0.*0.0.0.0') do (
  if not defined j for %%b in (%%a) do set "g=%%b" & set "j=1")
set "DG=%g%"
echo/
echo    мой шлюз %DG%
 
echo=========================
route add %PINGSITE% %IPP%1 >nul
 
set IPst=%IPP%
set /a IPfn=-1
 
:M0
:: +++ здесь нехватает перехвата по ESC с переходом на :endjob +++++++++++++++
if %IPfn% GTR %IPto% goto endjob
set /a IPfn=%IPfn%+1
set IPFULL=%IPst%%IPfn%
Call :StrOne %IPFULL%
ping -f -n 1 -l 1  %IPFULL%|find/I "TTL=" >nul
If %ERRORLEVEL%==1 goto M0
route change 8.8.4.4 %IPFULL% >nul
for /f "tokens=8-11" %%a in ('ping -f -n 2 -l 1 %PINGSITE%') do (
echo %%a %%c %%d>null| find "Среднее"
set sr=%%a 
set srr=%%c
set srrr=%%d
)
If %sr%==Среднее set /a sh="%sh%+1" & ECHO  шлюз %srr% %srrr% & goto M0
ECHO  клиент
set /a kk="%kk%+1"
goto M0
 
:endjob
route delete %PINGSITE% >null
Call :StrOne ========================
echo ========================
echo Найдено:
echo ----------
echo шлюзов   %sh%
echo клиентов %kk%
<Nul Set /P Echo=--Выход---
 
pause >null
exit
 
:: ============ Блоки подтирания строк ==============
:StrLen
set strString=%~1
set /a LastLen = 0
for /l %%i in (0,1,1024) do (
  set strTempString=!strString:~%%i,1!
  if "!strTempString!" neq "" (
    set /a LastLen+=1
  )
)
exit /b 0
 
:StrOne
if "%2"=="new" (call :StrWrite "%~1"& exit /b 0)
if "%2"=="crlf" (echo.&call :StrWrite "%~1"& exit /b 0)
if not defined LastLen (call :StrWrite "%~1"& exit /b 0)
Set BS=
for /l %%i in (1,1,%LastLen%) do (Set BS=!BS!)
<nul set /p text=%BS%
<nul set /p text=_%~1
Set /a LenBefore=%LastLen%
Call :StrLen "%~1"
if %LenBefore% GTR %LastLen% (
  set Space=
  set /a n=%LenBefore%-%LastLen%
  for /l %%i in (1,1,!n!) do (Set Space= !Space!)
  (<nul set /p text=_!Space!)
)
exit /b 0
 
:StrWrite
<nul set /p text=_%~1
set /a LenBefore=0
Call :StrLen "%~1"
exit /b 0
Добавлено через 1 минуту
UPD. Добавлен в каталог.
0
Charles Kludge
Клюг
7653 / 3168 / 383
Регистрация: 03.05.2011
Сообщений: 8,381
22.08.2013, 17:07 5
Цитата Сообщение от GREENX5 Посмотреть сообщение
Не хватает на мой взгляд остановки процесса ESC-ом (может быть кто не поленится - допишет
Тынц, только xor ax,ax заменить на mov ah,1
0
GREENX5
76 / 4 / 0
Регистрация: 20.08.2013
Сообщений: 27
22.08.2013, 20:10  [ТС] 6
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Тынц, только xor ax,ax заменить на mov ah,1
Спасибо, видел, но с ходу не разобрался. Batch немного не мой профиль, влез на днях чтобы инет вторым шлюзом зарезервировать и увяз )))
Запускаю этот код скана клавиш как есть - молотит в цикле, на клавиши не реагирует. Может поможете его в рабочем виде в мой втиснуть )) Нужен только ESC. Спасибо.

Да, в моем коде строчку 49 лучше заменить на
Bash
1
route change %PINGSITE% %IPFULL% >nul
Добавлено через 6 минут
Хотя какой он "мой", сборная солянка из образцов в этой ветке
0
22.08.2013, 20:10
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 20:10

Сканер директорий для локальной сети
Я пишу небльшую поисковую системму для локальной сети... подскажите плз, как просканить все...

Чат локальной сети (сервер + много клиентов)
Всем привет!!!! Прошу поделиться опытом по созданию клиент-серверных приложений в Delphi7. ...

Сканер сети, получение имен и IP-адресов компьютеров в сети
Доброго времени суток, дорогие форумчане! Хочу попробовать написать простенький сканер сети, что бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.