Настройка батника nbimainer на перезапуск виндовс при отключении интернета
У меня есть старый рабочий стол, который я использую как веб-сервер из моего дома, пока я учусь в колледже. Интернет дома дерьмовый, и во многих случаях, когда он выходит из строя, рабочий стол не может подключиться без перезагрузки.
Есть ли способ сделать скрипт, который загружается при запуске и каждые 12 часов или около того, будет пытаться пропинговать маршрутизатор, и, если он не работает, перезагружает сервер?
РЕДАКТИРОВАТЬ: Хорошо, я смог сделать этот сценарий после немного погуглил.
1 ответ 1
Вы не упомянули операционную систему, но если вы используете Windows, может пригодиться что-то вроде этого: JScript для Ping, Renew IP и Network Info / Repair.
Это сценарий, который я собрал для аналогичной проблемы. Он делает в точности то, что вы ищете, он проверяет шлюз по умолчанию (который будет вашим маршрутизатором) по заданному расписанию, а затем предпринимает необходимые действия в случае сбоя проверки связи.
В этом случае проблемные ПК не нужно было перезагружать, а просто запрограммировали сценарии ipconfig /release и ipconfig /renew для восстановления соединения. Нечто подобное может хорошо подойти и для вашего случая. Если по-прежнему требуется полная перезагрузка, этот сценарий можно легко изменить, чтобы учесть это.
Для Linux вы можете использовать скрипт оболочки следующим образом:
Это работает из-за кода возврата ping , как подробно описано на странице man:
После замены 192.168.1.1 на адрес вашего маршрутизатора вы можете запланировать его запуск каждый час или около того, используя cron. Для того, чтобы перезагрузить компьютер, вам нужно запустить его как root . Для Ubuntu по умолчанию вы можете добавить задание cron, используя:
Чтобы эта проверка выполнялась каждый час, например:
Вам нужно убедиться, что скрипт является исполняемым ( chmod +x ).
Если вы обнаружите, что выключения и резервного копирования интерфейса достаточно, вы можете сделать это вместо этого, выполнив что-то вроде ifdown eth0; ifup eth0 . Или объедините подходы: сначала сделайте это, а затем снова выполните тест ping. Если связь по-прежнему не восстановлена, тогда предпримите решительную меру полной перезагрузки.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
Может так-то можно по этим параметрам идентифицировать отсутствие сети?
Сеть есть и сети нет сооответственно:
Конфигурация компьютера | |
Процессор: Zilog Z80 | |
Материнская плата: ZX Spectrum (custom made) | |
Память: 64k (upD4164C-12) | |
HDD: FDD 5.25" | |
Звук: AY8912 |
Инсульт, а у вас просто обрывы связи или сам модем подвисает? Когда связь пропала, можно подключиться через коннект менеджер, или нужно обязательно перетыкать модем? » |
Нет, не виснет модем. Просто отключается с ошибкой "неправильный логин\пароль" И сам не подключается пока не нажмешь "подключить". И так довольно часто, бывает 10 раз в час. Если что то качать например фильм надо сидеть контролировать что не очень удобно.
-------
Debugged programm was unable to process exception. Terminating.
Не проще через WMI определять подключен адаптер к сети или нет? » |
Знать бы как это сделать. Я в этом, к сожалению, ничего не смыслю.
Кстати, винда сообщает, что соединение нерабочее, хотя коннект менеджер показывает противоположное. Вот по этому параметру можно было бы и запускать скрипт.
Последний раз редактировалось YouHim, 19-12-2011 в 21:59 .
Написал код, когда Wget делает 4 попытки по около
пропингует, например, 3 сайта по 10 пингов? Если ни один пинг не прошел, только тогда выполнить переподключение. » |
Переделать - no problem, но
YouHim, вот там, где Вы подчеркнули connected - Вы уверены, что при обрыве связи указанный скрипт 100% без ошибок меняет это значение на disconnected?
Можно ввести дополнительную проверку:
Перезапускать модем только, если одновременно выполняются два условия:
1) Не проходит ни один пинг
2) Network adapter выдает статус Disabled.
Когда я вхожу в Windows 7, мне нужно подождать 10 секунд, а затем отключить подключение по локальной сети (адаптер Ethernet) и затем снова включить его.
Я просмотрел предложенный ответ: включить / отключить беспроводной интерфейс в файле bat, но это не имеет значения, поскольку оно просто переключает текущее состояние.
Из того, что я могу сказать, мне нужно включить:
но я не уверен во времени ожидания или как я могу начать этот процесс после успешного входа в Windows.
Какой лучший подход здесь?
Почему вам нужно подождать 10 секунд, отключить локальную сеть, а затем снова включить ее? Скажите нам основную проблему, возможно, будет разумнее решить ее, чем связываться с интерфейсом.Создание Windows , запланированную задачу ( taskschd.msc или Control Panel\System and Security\Administrative Tools\Task Scheduler ) с триггером: приступить к выполнению задачи At log on и в расширенных настройках задержки задачи для 30 seconds . Затем добавьте действие Start a program и выберите свой .bat сценарий.
надеюсь, это поможет
Проголосовал, потому что это именно то, что я искал, мне потребовалась 2-секундная задержка между включением и выключением и отсутствием инициализации, потому что, когда иногда моя карта отказывается устанавливать соединение при запуске, поэтому у меня есть удобный файл bat на рабочем столеЛогика такова: ping public ip (google dns 8.8.8.8), если ping терпит неудачу, затем перейдите: RESTART и перезапустите сетевой адаптер с именем «LAN», после этого цикла снова с самого начала (если ping в порядке, то ничего не делать и пинг в петле, чтобы проверить, если адаптер подключен к Интернету)
Я использую эту команду для отключения и включения проблемного сетевого адаптера WiFi;
ОЧЕНЬ ПОЛЕЗНАЯ информация здесь, но в ответах отсутствует часть, которую нужно ввести в «Локальную сеть». Я наткнулся на этот ответ:
«Первый шаг - найти имя вашего беспроводного соединения. [Щелкните правой кнопкой мыши на символе WiFi]> Откройте« Центр управления сетями и общим доступом »>« Изменить настройки адаптера ». Это верхняя строка информации о соединении. Мой просто сказал« Wi-Fi », но это может быть беспроводное сетевое соединение и т. д. "
Кстати, если это сетевая карта локальной сети, я думаю, вам просто нужно найти имя для этого устройства.
Автоматизация некоторых процессов на компьютере часто позволяет существенно увеличить удобство использования ПК не только в работе, но и в повседневной жизни. В одном из топиков мы, к примеру, рассматривали способы добавления любой программы в автозагрузку компьютера: Автозагрузка. Добавление приложений в автозагрузку Windows.
Данная статья будет посвящена такому моменту, как автоматическое выключение компьютера через заданный промежуток времени. Все манипуляции мы будем производить исключительно средствами самой системы Windows, без использование сторонних программ . Кроме того, не станем ограничиваться выполнением голых команд, а добавим всему процессу немного юзабилити.
Содержание статьи:
Как выполнить shutdown для выключения и перезагрузки компьютера
Не будем срываться с места в карьер, начнём с самого начала. А начало - это основная команда для выключения компьютера, которую мы будем использовать. В ОС Windows для завершения работы достаточно передать системе команду shutdown с нужными параметрами.
В принципе, команду shutdown можно выполнять разными способами:
Все три способа схожи, поддерживают одни и те же параметры, поэтому мы не будет заострять на этом внимание и весь процесс будем выполнять в консоли, то есть в командной строке системы Windows.
Как же это работает? Чтобы компьютер выключился автоматически , то есть без необходимости лезть в меню "Пуск" и нажимать там кнопку "Завершение работы", нам нужно вызвать следующую команду:
Через 30 секунд после выполнения произойдёт завершение работы системы. Кроме этого той же командой, но с иным параметром можно не выключить компьютер, а перезагрузить его. Вот как это будет выглядеть:
Опять же отметим, что остальные параметры для команды выключения и перезагрузки схожи, поэтому мы не будем повторять каждый набор дважды, а рассмотрим весь процесс автоматического выключения компьютера на примере команды shutdown -s, держа в уме, что всё то же самое применимо и к команде shutdown -r
А теперь приступим к усовершенствованию команды и добавлению к ней дополнительных параметров.
Параметры команды shutdown
Материал, описанный в статье, применим к большинству используемых на сегодняшний день версий операционной системы от компании Microsoft. Команды и способы их выполнения позволяют автоматически выключить компьютер на Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Vista и всё ещё сохраняющей своего верного пользователя Windows XP.
Теперь рассмотрим основные параметры команды shutdown, которыми мы будем пользоваться:
- -s основной параметр, который позволяет автоматически выключить компьютер ;
- -r основной параметр, который позволяет автоматически перезагрузить компьютер ;
- -a основной параметр, который позволяет отменить запланированное действие по выключению или перезагрузке компьютера ;
- -t позволяет задать время задержки в секундах до выключения или перезагрузки компьютера. Возможно присвоение значения в диапазоне от 0 до 315360000 (10 лет). По умолчанию присваивается значение 30;
- -f принудительное закрытие запущенных приложений без предупреждения пользователей. Не самый главный параметр, но бывает полезен, так как помогает избежать отмены выключения или перезагрузки компьютера из-за зависших программ.
Для целей знакомства со способом автоматического выключения компьютера этого нам будет достаточно. Ниже мы добавим к приведённому набору другие команды, чтобы сделать использование функции shutdown ещё удобнее.
Полный список параметров для shutdown можно увидеть, выполнив в консоли следующую команду:
Автоматическое выключение компьютера через определённое время
Итак, переходим к практическому применению информации, которую мы собрали в первых двух главах.
Допустим, мы смотрим фильм и понимаем, что можем уснуть, не выключив компьютер. Нам нужно, чтобы компьютер выключился сам через 30 минут. Для этого необходимо выполнить следующую команду (мы помним, что сделать это можно не только в командной строке, но также через утилиту Выполнить или в меню Пуск ):
Используемые параметры нам уже знакомы. А значение 1800 задаёт значение времени в секундах, через которое будет произведено завершение работы. То есть, 1800 секунд = 1800 секунд / 60 секунд в минуте = 30 минут. С этим проблем возникнуть не должно. После выполнения команды мы получим системное уведомление, о том, что запланировано завершение работы
Кроме того, за 10 минут до момента завершения работы вне зависимости от запланированной причины (выключение или перезагрузка) мы получим дополнительное предупреждение от системы Windows
Но как быть, если, допустим, спустя минут 15 мы понимаем, что фильм досмотреть не успеем и нужно отменить автоматическое выключение? Чтобы отказаться от запланированного завершения работы Windows , необходимо выполнить следующую команду:
Сразу после выполнения команды высветится оповещение о том, что автоматическое выключение компьютера отменено
Это, собственно, всё, что нужно знать для автоматического выключения компьютера через заданное время. Но каждый раз вводить команду в консоль не очень удобно, поэтому ниже мы разберём, как написать бат-файл для автоматического выключения компьютера или его перезагрузки .
Батник для автоматического выключения компьютера
В статье Пакетные файлы (bat, батники) Windows мы подробно рассматривали основные правила создания бат-файлов и их синтаксис. Чтобы не повторяться лишний раз, в данной публикации будем описывать только те команды и параметры, которые будем применять для создания файлов, позволяющих запланировать автоматическое выключение компьютера.
Возьмём команду, приведённую в главе выше, и сделаем из неё простенький бат-файл для выключения компьютера через 10 минут. Его содержимое будет следующим:
Это очень легко, добавим функционала нашему bat-файлу. Для этого воспользуемся командой set, которая позволяет задавать пользовательские переменные. То есть, при запуске батника консоль будет спрашивать нас примерно следующее: "Через сколько секунд выключить компьютер?", а мы каждый раз можем вводить нужное значение и жать клавишу Enter . Вот как будет выглядеть код нашего батника:
- set /p sec_off= - задаём значение переменной sec_off;
- echo - выводим в уведомление заданное значение секунд;
- shutdown -s -f -t %sec_off% - выключаем компьютер спустя заданное в начале количество секунд.
Уже лучше, но можно усовершенствовать. Задавать время выключения в секундах не очень удобно. Мы будем использовать минуты (можно по аналогии настроить и часы). Однако, консоль Windows не поймёт нашего значения в минутах, поэтому для неё мы будем осуществлять перевод в секунды.
Вот как это будет выглядеть:
- set /p min_off= задаём значение переменной min_off;
- set /A sec_off= задаём значение переменной sec_off, умножая количество минут на 60, чтобы получить для консоли секунды;
- echo - выводим в уведомлениях заданные минуты;
- shutdown -s -f -t %sec_off% подставляем полученное значение в секундах.
В принципе, на этом можно остановиться. Готовые батники выключения, перезагрузки и отмены завершения работы с приведённым кодом можно скачать из прикреплённого к статье архива: auto-shutdown-reboot-bat.
Но можно ещё немного улучшить бат-файлы и сделать из трёх один, преобразовав его в крошечную программу. Этим и займёмся ниже.
Создаем программу для автоматического выключения компьютера
На данный момент мы имеем три батника , каждый из которых выполняет свою функцию: выключение компьютера, перезагрузку и отмену запланированных действий.
Для начала напишем основную часть нового единого bat-файла . Суть будет заключаться в том, чтобы спрашивать у пользователя, какое из трёх действий требуется выполнить, а потом уже переходить к той части, которая отвечает за нужную функцию.
Выбор функции зададим следующей строчкой (её, как и весь файл, можно отредактировать на своё усмотрение, как будет удобнее):
Здесь мы задаём новую переменную answer , значение которой вводится при каждом запуске файла и подтверждается нажатием клавиши Enter .
Переход к нужной части бат-кода осуществляем командой goto, в данном случае строчка будет иметь следующий вид:
Начало каждой независимой части ознаменуем, соответственно, как :1, :2 и :0
Для грамотного выполнения сделаем завершение каждой части кода не командой pause, а командой exit, добавив перед закрытием окна двухсекундную задержку:
И в завершении добавим раскрашивание текста разным цветом, в зависимости от выполняемой команды:
На выходе мы получим следующий код:
Каждая команда уже описана выше. Вот, как это работает:
- Мы запускаем батник.
- В ответа на вопрос о выборе функции вводим 1, 2 или 0. , подтверждаем ввод клавишей Enter .
- Консоль перейдёт к соответствующей части кода и, если это выключение или перезагрузка, спросит, через сколько минут произвести требуемое действие.
- Потом введённое значение преобразуется в секунды и добавляется в команду, параметры которой и определяют запланированное действие.
Для удобства можно упаковать получившийся батник в SFX-архив и добавить к нему иконку. В итоге получится простая портативная программа для автоматического выключения и перезагрузки компьютера через заданный интервал времени: auto-shutdown-exe.
Читайте также: