Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Управление из командной строки


Рекомендуемые сообщения

Всё работает!!! Большое Спасибо!!!

Я так понял команда rem нужена для того чтобы строка не выполнялась, а она написана для пояснения.

И с логом всё нормально, можно как угодно редактирвать.

Начал потихонечку учить ( пост Тролль-я)

Maikll

Как изменить, чтобы можно было контролировать не один а два или больше компьютеров.

Если пинговать к примеру 2 разных IP, и чтобы батник составлял соответственно 2 csv файла с разными именами

какая та часть программы должна повторяться для контроля второго IP

Если не затруднит напишите пожалуйста. (было бы неплохо если бы выделили цветом что именно должно повториться)

Програма, которую Вы написали мне хватает, Спасибо!

А это моя просьба ради изучения что и как работает, интересно стало.

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 589
  • Создана
  • Последний ответ

Топ авторов темы

какая та часть программы должна повторяться для контроля второго IP

собственно, вся :D

ну, за исключением того, что придется расширить границы цикла.

честно говоря, я не вижу смысла вбивать проверку нескольких адресов непосредственно в сам код.

Во-первых увеличится его объем (2 адреса - вдвое, 3 адреса - втрое и т.д.)

Во-вторых, изменятся и усложнятся условия цикла, что тоже не очень здорово.

В-третьих, не забываем, что основная задача программы - переодически проверять хост а в случае проверки нескольких адресов время между проверками неминуемо увеличится. Смысл тогда ведения лога, если его точность плюс-минус квадратный километр?

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

Т.е. запуск будет не просто по имени, а имя батника + через пробел адрес для проверки (я в таких случаях делаю ярлык к батнику и в поле Обьект прописываю необходимые параметры, это удобнее, чем каждый раз вводить)

Код в этом случае изменится совсем чуть-чуть:

@echo offset mem=0set ip=%1 :Loopsleep число_секунд задержки_между_проверкамиping -n 2 %ip% | find /i "(100"if %errorlevel% == 1 goto Loop2if %mem% == 0 (set mem=1) else (goto Loop)for /f "tokens=1,2,3 delims=." %%i in ('date/t') do (set mem1=%%i.%%j.%%k)for /f "tokens=1,2 delims=:" %%i in ('time/t') do (set mem2=%%i:%%j)echo %mem1%,%mem2%,The network is inaccessible.>>"log-%ip:~0,-1%.csv"goto Loop:Loop2if %mem% == 1 (set mem=0) else (goto Loop)for /f "tokens=1,2,3 delims=." %%i in ('date/t') do (set mem1=%%i.%%j.%%k)for /f "tokens=1,2 delims=:" %%i in ('time/t') do (set mem2=%%i:%%j)echo %mem1%,%mem2%,The network is accessible.>>"log-%ip:~0,-1%.csv"goto Loop

файл лога в этом случае будет иметь вид log-адрес_который_проверяли.csv

Если к примеру понадобится проверять 2 адреса одновременно, то кто запрещает запустить 2 экземпляра программы с разными параметрами-адресами? :dontgetit:

Ссылка на комментарий
Поделиться на другие сайты

:bye1: Что то не получаеться

Делал следующим образом: созал ярлык на рабочем столе, указал размещение объекта "C:\test 10.0.10.10.bat", указал время 60 (секунд)

Запустил, так программа никаких файлов не создала.

Думаю что то не так делаю, но пока не понял что не так.

Ссылка на комментарий
Поделиться на другие сайты

параметр должен быть после имени батника а не внутри него.

То есть будет так: C:\test.bat 10.0.10.10

Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

Maikll ! Спасибо ! Всё работает

ещё просьба, не смогли бы вы порекомендовать какую ни будь программу которая могла так же выполнять мониторинг за удалёнными компютерами

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

Ссылка на комментарий
Поделиться на другие сайты

a139st: а почему не хотите попробовать написать такую программу самому? Раз уж мы начали разговор о всяческих батниках, то это будет неплохой тренировкой, ведь вы решили это дело изучать, не так ли? ;)

P/S. готовых решений такого рода во множестве: попробуйте в любом поисковике забить название MultiPing Grapher

Ссылка на комментарий
Поделиться на другие сайты

До недавного времени я наверное от силы десяток команд набирал в командной строке, просто не догадывался о возможностях.

Конечно начал учить, но для меня пока слишком много информации.

Ещё мешает учёбе слабые знания англиского языка.

Эта моя просьба по поводу программы; не для меня нужно было, а просто попросили, когда увидели моё увлечение.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Уважаемые господа!

Возник очень волнующий меня вопрос о написании некой команды в cmd для создания пользователя в W2K, при этом с группами и паролями вопросов не возникло, но... есть замечательная вкладка - Remote Access Permision - где по умолчанию при создании юзера ставится "галка" что вход контролируется политикой удаленного доступа и в этом роде... А необходимо поставить галку на Allow Access... Как мона это сделать - есть ли может прога специальная. Факт в том, что за день создается много пользователей и заходить в каждого и ставить эту галку ручками уже надоедает... :)

Ссылка на комментарий
Поделиться на другие сайты

morituri: возможно, вам поможет вот такой скрипт

хотя...не проще ли настроить соответствующим образом политику удаленного доступа?

Ссылка на комментарий
Поделиться на другие сайты

ПАМАГИТЕ...

нужно переименовать группу файлов с маской a1f??897.x4a в s0182755.0??, то есть выделить из имени исходного файла 4, 5 символ и приляпать их в расширение имени полученного файла . Организовать надо в батнике.... вот.. спасибо..

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...

Всем привет.

Не поможете.

Проблемка такая нужно сделать батник чтобы он пинговал сервера и если он вдруг не пингуется записывал в лог какой сервер не пингуется. Серваков 13 шт.

приблизительно схема такая

пинг ТТ1

пинг ТТ2

пинг ТТ3

пинг ТТ4

пинг ТТ5

пинг ТТ6

и тд..

и допустим ТТ4 не пингуется,создается файлик ERORR где примерно будет написано

TT4 no ping или что то в этом роде.

Как это сделать я не понимаю :)

Может кто помочь ???

И забыл :bye1:

если допустим ТТ5 тоже не пингуется он дописал в этот же файлик

Ссылка на комментарий
Поделиться на другие сайты

svx59: буквально на предыдущей странице нечто подобное обсуждалось и выкладывались примеры батников. Можно взять что-то оттуда и под себя переделать.

Навскидку можно что-то вроде такого использовать

echo offfor /f "tokens=*" %%a in ('more^<ip.txt') do call :_replace %%a :_replaceset i=%*ping %i% | find /i "(100"if %errorlevel% == 1 goto eofecho %i% no ping.>>ERORR.txtgoto eof

где ip.txt - файл, содержащий список проверяемых компов по ip-адресам или именам (каждое имя пишется в отдельной строке)

Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

Bednyazhka:

По вашим условиям текст батника будет вот таким

echo offFOR %%a IN (*.x4a) DO call :_replace %%agoto eof:_replaceset i=%*ren %i% %i:~0,-2%%i:~3,2%goto eof 
Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

echo offfor /f "tokens=*" %%a in ('more^<ip.txt') do call :_replace %%a :_replaceset i=%*ping %i% | find /i "(100"if %errorlevel% == 1 goto eofecho %i% no ping.>>ERORR.txtgoto eof

где ip.txt - файл, содержащий список проверяемых компов по ip-адресам или именам (каждое имя пишется в отдельной строке)

Косяк :bye1: создал ip.txt в писал список компов на проверку при запуске батника пишет "Не удатся найти указанную метку пакетного файла"

Если можешь подробнее объяснить.

Допустим в ip.txt список сделал такой (тест)

yandex.ru

rambler.ru

ffggjjjssl.su (такого нет поэтому должен записать в error.txt)

fishki.net

Помоги очень нужно у нас просто чел заболел,а я не успеваю и админить и батники делать и тд.. помогите беному админу :)

Ссылка на комментарий
Поделиться на другие сайты

Помогите написать батник для перезагрузки модема.

Суть проблемы:

На работе на шлюзе периодически виснет ADSL-модем D-Link DSL-2520U. В таких случаях я обычно захожу на модем удалённо через telnet и перезагружаю его. Т.е. он не то чтобы виснет - пропадает инет. Проблема в том что предсказать время невозможно, поэтому бывает очень неприятно если модем повиснет в 7.00, а рабочий день у меня с 9.00, или если модем повиснет в субботу после обеда, а в субботу работаю я до обеда.

Поэтому нужно чтобы батник:

1. Проверял пингами наличие интернета.

2. В случае если инета нет - логинился бы через телнет на модем и перезагружал бы его.

Такое вообще реально?

Изменено пользователем Darth Emil
Ссылка на комментарий
Поделиться на другие сайты

Darth Emil: стандартными средствами telnet не получится, она не умеет указывать передаваемые команды в качестве параметров.

Поэтому будем использовать TSE - Telnet Script Executor.

За основу батника возьмем уже выкладывавшийся здесь код для перезапуска dial-up соединения и получим

@echo off:Loopping ya.ru | find /i "(100"if %errorlevel% == 1 goto Looptse.exe < reboot > log.txtgoto Loop

где reboot - файл, содержащий сценарий команд для TSE

Готовый батник, файл команд и сам tse.exe с описание в аттаче. В качестве команды перезагрузки я поставил "adsl start".

Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

Maikll: т.е. я понял так:

1. Батник будет постоянно пинговать ya.ru. Как это скажется на скорости интернета, учитывая что у нас всего 128 кбит/сек?

2. Нужно чтобы телнет логинился на модем под определённым логином и паролем.

Ссылка на комментарий
Поделиться на другие сайты

1. Батник будет постоянно пинговать ya.ru. Как это скажется на скорости интернета, учитывая что у нас всего 128 кбит/сек?

Ну можно и снизить нагрузку на сеть. Тут 2 варианта:

- либо ты будешь запускать батник к примеру планировщиком с нужной тебе частотой - тогда цикл вообще убираем

- либо вставляем в цикл задержку между проверками на сколько скажешь

2. Нужно чтобы телнет логинился на модем под определённым логином и паролем.

открой блокнотом файлик reboot без расширения из аттача, там в комментариях все указано, где логин пишется, где пароль, где команда. Поменяй на нужные тебе и сохрани.

Изменено пользователем Maikll
Ссылка на комментарий
Поделиться на другие сайты

Maikll:

- либо ты будешь запускать батник к примеру планировщиком с нужной тебе частотой - тогда цикл вообще убираем

- либо вставляем в цикл задержку между проверками на сколько скажешь

Пример обоих вариантов можно увидеть?
Ссылка на комментарий
Поделиться на другие сайты

Darth Emil: можно, конечно.

в первом случае просто убираем цикл

@echo offping ya.ru | find /i "(100"if %errorlevel% == 1 goto Looptse.exe < reboot > log.txt

для запуска делаем новое задание во встроенном планировщике. Плюсом будет то, что окошко батника в таком случае не появляется на экране.

во втором используем инструмент sleep для паузы

@echo off:Loopping ya.ru | find /i "(100"if %errorlevel% == 1 goto Looptse.exe < reboot > log.txtsleep число-секунд-задержкиgoto Loop

утилиту sleep можно взять в 375 посте сей темы.

Ссылка на комментарий
Поделиться на другие сайты

Похоже я тупой :)

Для теста запустил батник с командой:

tse.exe < reboot > log.txt

В файле reboot написал это:

;Вписываете адрес вашего ротуера вместо 192.168.1.1 если он другой

open 192.168.1.1

waitfor "Login:"

;

;В следующей строчке пишите ваш логин вместо "admin"

transmit "admin^M"

waitfor "Password:"

;

;В следующей строчке пишите ваш пароль вместо "admin"

transmit "мой_пароль^M"

;

;В следующей строчке указываете знак готовности shell установленного на роутере

waitfor ">"

;

;В следующей строчке указываете команду перезагрузки роутера

transmit "reboot^M"

quit

Но не срабатывает. Что не так? И почему вот что:

1. В конце команд стоит ^M?

2. Сьедены первые буквы в assword и ogin

3. Приглашение не # а >

Ссылка на комментарий
Поделиться на другие сайты

1. В конце команд стоит ^M?

Так указано в описании команды transmit, см tse.txt

2. Сьедены первые буквы в assword и ogin

я был не уверен, как будет на выходе железки (к примеру может Password а может password ), поэтому постарался сделать универсально, чтобы сработало в любом случае. По факту это не должно иметь никакого значения.

3. Приглашение не # а >

:blush2:

в моем файле было waitfor "#"

сейчас попробовать не могу, но на моем DSL-2540U с указанными в файле настройками работало. Может в твоей железке нужно другую команду послать?

Ссылка на комментарий
Поделиться на другие сайты

Люди добрые подскажите что делаю не так!

Вот кусок кода батника который отказывается корректно отрабатывать

for %%a IN ( trx*.*) DO call :tmp %%~ta

:tmp

cls

SET F_DATE = %2

SET F_NAME = %~1

echo %2 %~1 >>file.tmp

for /f %%v in ( file.tmp) do call :createfolder %%v

:createfolder

set d = %1

rem день

set dd=%1:~0,2%

rem месяц

set dm=%1:~3,2%

rem god

set dg=%1:~6,4%

md e:\bink\batch\%dg%\%dm%\%dd%

move e:\bink\batch\trx%dd%*.* e:\bink\batch\%dg%\%dm%\%dd%\*.*

exit /b

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

Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу



×
×
  • Создать...