Jump to content
СофтФорум - всё о компьютерах и не только

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


Recommended Posts

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

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

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

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

Maikll

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

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

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

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

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

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

Link to comment
Share on other sites

какая та часть программы должна повторяться для контроля второго 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:

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

  • 3 weeks later...

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

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

Link to comment
Share on other sites

ПАМАГИТЕ...

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

Link to comment
Share on other sites

  • 2 weeks later...

Всем привет.

Не поможете.

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

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

пинг ТТ1

пинг ТТ2

пинг ТТ3

пинг ТТ4

пинг ТТ5

пинг ТТ6

и тд..

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

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

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

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

И забыл :bye1:

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

Link to comment
Share on other sites

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-адресам или именам (каждое имя пишется в отдельной строке)

Edited by Maikll
Link to comment
Share on other sites

Bednyazhka:

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

echo offFOR %%a IN (*.x4a) DO call :_replace %%agoto eof:_replaceset i=%*ren %i% %i:~0,-2%%i:~3,2%goto eof 
Edited by Maikll
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

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

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

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

Edited by Darth Emil
Link to comment
Share on other sites

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".

Edited by Maikll
Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

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

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

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

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

Edited by Maikll
Link to comment
Share on other sites

Maikll:

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

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

Пример обоих вариантов можно увидеть?
Link to comment
Share on other sites

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 посте сей темы.

Link to comment
Share on other sites

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

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

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. Приглашение не # а >

Link to comment
Share on other sites

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

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

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

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

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

:blush2:

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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.



×
×
  • Create New...