|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Тестирование сетки. |
|
|
CMD/BAT - [решено] Тестирование сетки.
|
Новый участник Сообщения: 12 |
Возникла необходимость тестировать сеть, чтобы определить работающее оборудование.
Имеется Excel-ский файл, состоит из нескольких столбцов. В 14 столбце занесены IP адреса. Нужно взять IP, пингануть и результат пингов записать в следующий столбец т.е сформировать 15 столбец с результатами, если хоть один пинг прошёл то результат ОК, если нет то строку оставить пустым. Затем переход на следующую строку. и так до конца столбца. Всего 1000 строк. Желательно, чтобы можно былобы регулировать количество пингов. Буду очень признателен за помощь. |
|
Отправлено: 15:32, 12-10-2010 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Sub pingnet() Begin = "N3" ' Клетка, с которой начинается просмотр адресов в таблице N_Uzl = 1 ' Число подузлов, отлич на единицу в последнем октете (>0!!!) i_Win = 1 ' 1 - видимое командное окно при пропинговке, 0 - не видимое N_Ping = 8 ' Число запросов Set WS = CreateObject("WScript.Shell") ip = Range(Begin) i = 0 Do While Len(Trim(ip)) <> 0 ipm = Split(ip, ".") Range(Begin).Offset(i, 1) = "Тестирую ..." Range(Begin).Offset(i, 2) = "" Ret = WS.Run("cmd /C Ping -n " + CStr(N_Ping) + " " + ip, i_Win, True) Msg = CStr(Date) + " " + CStr(Time) Msg2 = "" If Ret = 0 Then Msg = Msg + " OK" For j = 1 To N_Uzl ip = CStr(ipm(0)) + "." + CStr(ipm(1)) + "." + CStr(ipm(2)) + "." + CStr(ipm(3) + j) Ret = WS.Run("cmd /C Ping -n " + CStr(N_Ping) + " " + ip, i_Win, True) Msg2 = Msg2 + ip If Ret = 0 Then Msg2 = Msg2 + "-OK " Else Msg2 = Msg2 + "-Err " Next Else Msg = Msg + " Err" End If Range(Begin).Offset(i, 1) = Msg Range(Begin).Offset(i, 2) = Msg2 i = i + 1 ip = Range(Begin).Offset(i, 0) Loop End Sub |
------- Последний раз редактировалось megaloman, 19-10-2010 в 15:15. Отправлено: 11:07, 19-10-2010 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Не смогли бы вы заново выложить код с данными изменениями,
У меня что то не получается. |
Отправлено: 12:29, 19-10-2010 | #22 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Всё понятно и всё работает.
Большое спасибо за помощь!!! Успехов Вам! |
Отправлено: 15:48, 19-10-2010 | #23 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать У этих скриптов есть интересная особенность, при пинге узла от которого приходит не "превышен интервал ожидания для запроса", а "ответ от *.*.*.* заданный узел не доступен", в результат записывает ОК.
|
Отправлено: 13:34, 28-10-2011 | #24 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Добрый день! Подскажите пожалуйста, а каким образом можно данный bat-файл приспособить к следующей задаче:
Есть контрольный файл в папке C:\111 с названием: "HTIN.txt" В нем есть контрольные строки вида: C:\222\000047675410000000011122015.XML: C:\222\000070380710000000011122015.XML: C:\222\000072491010000000011122015.XML: C:\222\000072515710000000011122015.XML: C:\222\000047675410000000011122015.XML: 456 C:\222\000070380710000000011122015.XML: 213 C:\222\000072491010000000011122015.XML: 432 Нужно чтобы скрипт читал из папки C:\111\*.XML файлы И если находил в них еквивалентную контрольному файлу строчку, то записывал результат следующим образом: Содержимое "HTIN.txt" после обработки: R22GA R23GA C:\222\000047675410000000011122015.XML: 456 987 C:\222\000070380710000000011122015.XML: 213 C:\222\000072491010000000011122015.XML: 432 456 C:\222\000072515710000000011122015.XML: Я понимаю следующее: @Echo off setLocal EnableExtensions rem здесь нужно подставить вместо даты и время на название файлов из папки C:\111 set tm=%time::=% set tm=%tm:~0,-3% set dt=%date:~8,2%%date:~3,2%%date:~0,2% rem for /f "UseBackQ tokens=1,*" %%A in ("%~n0.txt") do call :Ping %%A "%%B" del /f "%~n0.old" >nul 2>nul ren "%~n0.txt" *.old 2>nul ren "%~n0.tmp" *.txt 2>nul goto END :Ping set stat=Faild if "%1"=="Date" echo Date %dt% %~2>>"%~n0.tmp"&exit /b if "%1"=="Time" echo Time %tm% %~2>>"%~n0.tmp"&exit /b rem а вместо команды ping нужно подставить команду которая будет проверять эквивалентность первого столбца в каждом файле со строкой в контрольном файлк и если они будут идентичными то подставлять значение из текущего по списку файла. ping -n 1 %1 >nul 2>nul if %ErrorLevel%==0 set stat=Ok echo %1 %stat% %~2>>"%~n0.tmp" exit /b :END |
Последний раз редактировалось gremlintv2, 22-01-2016 в 17:31. Причина: ошибка Отправлено: 17:24, 22-01-2016 | #25 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать Цитата gremlintv2:
Не-а, нужен другой алгоритм: @echo off set "dir=C:\111" set "control=HTIN.txt" set "files=R*.txt" pushd "%dir%"|| exit/b& set "t= " set "y=%t%%t%%t%%t%%t%" <"%control%">"%~dp0.tmp" ( for /f "tokens=1,2 delims=:" %%i in ('more') do @( set "x=%%i:%%j:" for /f "delims=" %%k in ('"2>nul dir/a-d/b "%files%"| sort"') do @( if defined y (if defined z (call set "z=%%z%%%t%%%~nk") else set "z=%y%%%~nk") for /f "tokens=3 delims=:" %%l in ('"<"%%k" find/i "%%i:%%j:""') do @( for /f %%m in ("%%l") do @call set "x=%%x%%%t%%%m" ) )|| call set "x=%%x%%%t% " cmd/v/c "(if defined z echo.!z!)& echo.!x!"& set "x="& set "y="& set "z=" ) )& >nul move "%~dp0.tmp" "%control%"& popd exit/b |
|
Отправлено: 07:02, 24-01-2016 | #26 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Georgio, огромное вам спасибо за помощь! Извините что поблагодарил только сейчас. Как говориться лучше поздно чем никогда. А не подскажете как решить такой вопрос:
@Echo off setLocal EnableExtensions set tm=%time::=% set tm=%tm:~0,-3% set dt=%date:~8,2%%date:~3,2%%date:~0,2% for /f "UseBackQ tokens=1,*" %%A in ("%~n0.txt") do call :Ping %%A "%%B" del /f "%~n0.old" >nul 2>nul ren "%~n0.txt" *.old 2>nul ren "%~n0.tmp" *.txt 2>nul goto END :Ping set stat=Faild if "%1"=="Date" echo Date %dt% %~2>>"%~n0.tmp"&exit /b if "%1"=="Time" echo Time %tm% %~2>>"%~n0.tmp"&exit /b ping -n 1 %1 >nul 2>nul if %ErrorLevel%==0 set stat=arp -a %1 echo %1 %stat% %~2>>"%~n0.tmp" exit /b :END |
Отправлено: 15:58, 12-04-2016 | #27 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Route/Bridge - Схема сетки | dmz | Сетевые технологии | 4 | 06-12-2010 20:28 | |
Доступ к шаре из сетки | Negativ | Microsoft Windows NT/2000/2003 | 2 | 17-08-2010 17:45 | |
Прочее - Схема небольшой сетки | migel2007 | Сетевые технологии | 10 | 28-06-2008 01:42 | |
создание сетки | abramov4 | Сетевые технологии | 15 | 06-03-2006 13:31 | |
Проблема со скоростью в сетки | SanCho | Сетевые технологии | 7 | 14-11-2003 01:21 |
|