Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > Компьютеры и Интернет > Скорая помощь

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 05.04.2008, 18:11   #1
Постоялец
 
Пол:Мужской
Регистрация: 15.09.2007
Сообщений: 695
Репутация: 218
По умолчанию Условие в консоли - CMD

Хочу в CMD проверять включён ли комп в сети и если да, то выполнять определённые действия.
Логика такая:

Если команда1 выполнена успешно, то идти на метку m1 - иначе выполнить команду2

if ping 10.0.0.99 goto m1 C:\WINDOWS\pid.exe

Как правильно? Запутался с else и exist и ещё cmd ругается, что 10.0.0.99 - неопознанная команда. :/
Kucher2 вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: Рекомендуем гипермаркет КНС - asus vivobook 15 x1504z - более 50-ти тысяч наименований товаров со склада в МосквеИнтернет-магазин КНС Нева - купить ноутбук для дома - поставка техники в СПБ и города северо-запада России.подставка под цветок напольнаяКондиционер TMV-V50G/N1Y(EV)yougile telegram интеграция


Старый 05.04.2008, 19:56   #2
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Условие в консоли - CMD

Цитата:
Сообщение от Kucher2 Посмотреть сообщение
if ping 10.0.0.99 goto m1 C:\WINDOWS\pid.exe

Не совсем так. Как вариант:
Код:
ping -n 1 10.0.0.99
if errorlevel 1 goto no_ping
Добавлено через 6 минут
Не очень понял, правда, что такое PID.EXE? Эту прогу надо запустить, если удалённый комп включен? Тогда можно так:
Код:
ping -n 1 10.0.0.99
if not errorlevel 1 c:\windows\pid.exe
P.S.: CMD правильно ругается. У команды IF строго определённый синтаксис. EXIST - это проверка наличия файла. И только. Типа if exist \\10.0.0.99\ресурс\файл.jpg goto Заработало

Последний раз редактировалось vmunt; 05.04.2008 в 20:03.. Причина: Добавлено сообщение
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 20:44   #3
Kucher2
Постоялец
 
Пол:Мужской
Регистрация: 15.09.2007
Сообщений: 695
Репутация: 218
По умолчанию Ответ: Условие в консоли - CMD

Просто раньше было 4 задания, а я захотел сделать одно, одним файлом: проверяем есть ли связь с сервером, если нет - запускаем авторизатор, который открывает туда доступ. Затем NET USE... делаем локальную копию архива с сервера, очищаем папку и закрываем соединение.
Радует, что можно проверить ещё кучу всего, но для этой задачи достаточно того, что есть.
Первый вариант заработал, мне нужен был лишь синтаксис, спасибо.
С остальным я разобрался. Просто в справочной системе маловато примеров и как-то всё туманно. За if not я сообразил сразу.
Прекрасно работает.
Тему можно удалить.
Kucher2 вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 21:13   #4
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Условие в консоли - CMD

Кхм... Во-первых, улыбнула постановка задачи:
Цитата:
Сообщение от Kucher2 Посмотреть сообщение
проверяем есть ли связь с сервером

Хаароший сервер, надо сказать...
Во-вторых:
Цитата:
Сообщение от Kucher2 Посмотреть сообщение
если нет - запускаем авторизатор, который открывает туда доступ.

Тут слабо понял, как соотносится PING и авторизация на сервере? Здесь, скорее всего, больше в тему проверка наличия файла в расшаренной папочке...

А по поводу архивной копии:
1. Надо.
2. NET USE, имхо, тоже лишнее...
Код:
copy \\10.0.0.99\ARCH\*.* c:\archieve
echo y|del \\10.0.0.99\ARCH\*.*
Цитата:
Сообщение от Kucher2 Посмотреть сообщение
Просто в справочной системе маловато примеров и как-то всё туманно.

Ах это в справочной системе туманно?! Паанятно...
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 21:39   #5
Kucher2
Постоялец
 
Пол:Мужской
Регистрация: 15.09.2007
Сообщений: 695
Репутация: 218
По умолчанию Ответ: Условие в консоли - CMD

vmunt,
Алгоритм резервного копирования с сервера под Samba используется мною уже не один год. Естественно, что там всё запаролено.
И ваш метод без авторизации здесь не пройдёт.

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

Цитата:
@echo off

ping -n 1 10.0.0.10
if not errorlevel 1 goto m1

rem На сервере стоит биллинг Stargazer. Авторизатор просто включает разрешающие правила фаервола для этого ПК.
"C:\Program Files\inetaccess\InetAccess.exe"

:m1
NET USE * /delete /yes
NET USE O: \\10.0.0.10\hide$ pass /USER:user

rem Далее пинги служат паузами, потому что если не делать задержки, то при работе команды NET USE без них - возможны проблемы. Проверено.
ping 127.0.0.1 -n 5

xcopy /Y /E \\10.0.0.10\hide$ D:\LAN
rmdir /Q /S \\10.0.0.10\hide$

ping 127.0.0.1 -n 5

NET USE O: /delete /yes

Справка в командной строке cmd по поводу оператора IF действительно запутана. А стандартная виндовая сейчас недоступна - на машине много задач выполняется, не хочу пока беспокоить её экспериментами.

Последний раз редактировалось Kucher2; 05.04.2008 в 21:50..
Kucher2 вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 21:58   #6
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Условие в консоли - CMD

Интересует...

1. Не очень понятно, зачем подключать ресурс paint$, если в этом пакетнике он не используется вообще.
2. Зачем вообще после авторизации вводить дополнительные пароли на доступ к ресурсу? Клиент в InetAccess (не знаю, что такое) может залогиниться пользователем, которому запрещено подключаться к ресурсу paint$?
3. ping 127.0.0.1 -n 5 - это что за заморочки? Это вариант задержки такой? А зачем? Какие-то нюансы при работе с Linux-овским сервером?
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 22:14   #7
Kucher2
Постоялец
 
Пол:Мужской
Регистрация: 15.09.2007
Сообщений: 695
Репутация: 218
По умолчанию Ответ: Условие в консоли - CMD

Цитата:
Сообщение от vmunt Посмотреть сообщение
Интересует...

1. Не очень понятно, зачем подключать ресурс paint$, если в этом пакетнике он не используется вообще.

Я ошибся. Исправил.
Цитата:
2. Зачем вообще после авторизации вводить дополнительные пароли на доступ к ресурсу? Клиент в InetAccess (не знаю, что такое) может залогиниться пользователем, которому запрещено подключаться к ресурсу paint$?

Клиент не логинится, он просто сообщает серверу, что такой-то юзер хочет пройти (юзер этот имеет отношение лишь к билингу, прав к доступу в самой системы у него нет) и сервер открывает правила фаервола, пуская меня к себе по IP-протоколу.

Цитата:
3. ping 127.0.0.1 -n 5 - это что за заморочки? Это вариант задержки такой? А зачем? Какие-то нюансы при работе с Linux-овским сервером?

Да, вариант задержки "по-быстрому". Иначе надо использовать доп. утилиты. А этот вариант универсален. Я ж сказал: всё просто. Зачем задержки - я выше написал.
Вообще в Nix'ах для этого есть команда задержки.. по-моему sleep.
А MS почему-то пожмотились на такое.

Последний раз редактировалось Kucher2; 05.04.2008 в 22:16..
Kucher2 вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 22:23   #8
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Условие в консоли - CMD

Цитата:
Сообщение от Kucher2 Посмотреть сообщение
Вообще в Nix'ах для этого есть команда задержки.. по-моему sleep.
А MS почему-то пожмотились на такое.

Почему пожмотилась? Вот... Только там про Nix-ы ни слова...
Спасибо за ответы. Всё стало понятно.
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 22:29   #9
Kucher2
Постоялец
 
Пол:Мужской
Регистрация: 15.09.2007
Сообщений: 695
Репутация: 218
По умолчанию Ответ: Условие в консоли - CMD

Цитата:
Сообщение от vmunt Посмотреть сообщение
Почему пожмотилась? Вот... Только там про Nix-ы ни слова...

Это отдельный модуль. А в NIX'ах эта функция встроена уже.
Если использовать её сейчас, то на другой машине такое решение работать не будет - надо снова файлик этот брать где-то. А мне важна универсальность и простота.
Kucher2 вне форума
 
Ответить с цитированием Вверх
Старый 05.04.2008, 22:39   #10
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Условие в консоли - CMD

Я понял (про отдельный модуль)... Если что, намёк... У меня sleep.exe лежит вместе с пакетником, в котором используется...
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 06.04.2008, 20:24   #11
Kucher2
Постоялец
 
Пол:Мужской
Регистрация: 15.09.2007
Сообщений: 695
Репутация: 218
По умолчанию Ответ: Условие в консоли - CMD

А вот ещё, паровозом, вопросик:
Вот в этом фрагменте:
Цитата:
ping -n 5 10.0.0.10
if not errorlevel 1 goto m1

Если, скажем, два компа находятся на большом удалении, то 1-2 пакета могут потеряться (к примеру я хочу сделать сервер VPN и коннектиться к нему из любой точки мира).
Как правильно настроить такое условие, чтобы при прохождении большинства пакетов - оно считалось бы правдивым?
Kucher2 вне форума
 
Ответить с цитированием Вверх
Старый 07.04.2008, 00:27   #12
vmunt
Постоялец
 
Пол:Мужской
Регистрация: 28.01.2008
Адрес: Пермь
Сообщений: 438
Репутация: 172
По умолчанию Ответ: Условие в консоли - CMD

Насколько я понимаю, errorlevel после ping-а взводится, если _ни_один_ из пакетов не дошёл. Доку по нему сейчас искать тяжко уже (баиньки хоца), но думаю, можно просто попробовать нарисовать пакетник типа:
Код:
ping -n 20 10.0.0.10
if errorlevel 10 echo 10
if errorlevel 9 echo 9
...
if errorlevel 1 echo 1
и запускать его на компе, выдёргивая и вставляя сетевой шнур из компа/ноута. У меня DHCP, поэтому быстро протестить не получится... А со статическими адресами быстро провести 4 теста - потеряны все пакеты, начальные пакеты, в середине и в конце - и посмотреть результат. Думаю, просто будет errorlevel 1 в первом случае, и, может быть, в последнем...

А у меня в пакетнике проверки, если первый пинг не проходит, то я перехожу на посылку второго пинга, и только потом обрабатываю облом. Таким образом можно, например, делать 3,4,5 последовательных проверок ping -n 1 x.x.x.x...
vmunt вне форума
 
Ответить с цитированием Вверх
Старый 07.04.2008, 02:44   #13
serjykt
Пользователь
 
Пол:Мужской
Регистрация: 10.10.2005
Сообщений: 163
Репутация: 244
По умолчанию Ответ: Условие в консоли - CMD

Такой vbs скрипт использую для проверки с утра работоспособность серверов висит в назначенных заданиях + cmd2sms.exe найдите на сайте для своего региона и оператора скрипт отправки смс, может кому нибудь пригодиться

Скрипт
__________________
Не все ври, что знаешь...

Последний раз редактировалось Plesha; 07.04.2008 в 06:41..
serjykt вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Установка сафта в консоли? Калина Вопросы и проблемы 15 24.06.2010 18:55
crop на все фотки, но условие: отрезать 1см снизу и 1см сверх.как сделать так Action? tasheal Школа Photoshop / Photoshop School 1 28.09.2008 16:02
Рисование в консоли на C# Ivan_32 .NET 9 21.04.2008 17:46
Запрет консоли CS 1.6 whitevolf Помощь по играм 3 13.04.2007 13:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 15:17. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.19923 секунды с 11 запросами