Перезапуск службы по событию программа. Отложенный ежедневный запуск задачи

04.10.2009 17:50

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

Чтобы запустить Планировщик заданий, откройте меню Пуск, в поисковую строку введите и нажмите Ввод (в нерусифицированной Windows 7 вместо слова введите taskschd.msc ).

Также можно открыть Панель управления (расширенный вид) -> Администрирование -> Планировщик заданий .

В расположенном справа меню Действия нажмите Создать задачу (или Создать простую задачу ).

В окне введите название новой задачи и ее описание. Если нужно запускать программу с повышенными правами администратора, то активируйте функцию Выполнить с наивысшими правами .

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

Перейдите на вкладку Действия и нажмите кнопку Создать .

Чтобы запланировать выполнение программы по указанному расписанию, в раскрывающемся списке Действие выберите и с помощью кнопки Обзор укажите местоположение исполняемого файла.

Чтобы запланировать отправку электронной почты по расписанию, в раскрывающемся списке Действие выберите Отправка электронной почты и заполните стандартные поля: От (ваши имя и адрес электронной почты), Кому (имя и адрес получателя письма), Тема (заголовок письма) и Текст (текст сообщения). Если нужно прикрепить файлы к отправляемому сообщению, с помощью кнопки Обзор укажите местоположение файла, который хотите прикрепить. В поле Сервер smtp укажите smtp-сервер поставщика своей электронной почты (например, smtp.mail.ru ) и нажмите OK .

Чтобы запланировать вывод на экран определенного сообщения по указанному расписанию, в раскрывающемся списке Действие выберите Вывод сообщения и заполните поля Заголовок и Сообщение .

Очень удобная вещь, когда нужно напомнить себе о том, что через 5 минут наступит Новый год, что пора покормить кошку, выключить суп или зайти на сайт Windows 7 – Впечатления и факты. Выглядеть такое сообщение будет примерно так:

Перейдите на вкладку Условия и укажите условия выполнения задачи.

Также можно задать дополнительные параметры выполнения задачи на вкладке .

После завершения всех этих действий, нажмите OK , чтобы создать задачу.

Чтобы изменить созданное задание, откройте Планировщик заданий, выделите задачу в списке, в правом меню Действия выберите Свойства , отредактируйте нужные параметры и нажмите OK .

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

Примечание . Чтобы Планировщик заданий функционировал, служба планировщика заданий должна автоматически запускаться вместе с Windows 7. Откройте Панель управления (расширенный вид) -> Администрирование -> Службы . В списке служб найдите, дважды щелкните по ней, на вкладке Общие установите тип запуска Авто и нажмите OK .

Существует множество программ и гаджетов разной функциональности для этого, но в этой статье я покажу как можно выключить, перезагрузить и отправить компьютер в режим сна с помощью стандартных средств Windows.
Этот способ проверялся на Windows XP, Windows 7 и Windows 8.

Для осуществления нам нужен "Планировщик заданий" (или Задач). В разных версия Windows Он расположен немного по разному.

В Windows XP :

Пуск - Панель управления - ярлык "Назначенные задания"


либо

Пуск - Все программы - Стандартные - Служебные - Назначенные задания

В Windows 7 :

Пуск - Панель управления - Администрирование - Расписание выполнения задач


либо

Пуск - Все программы - Стандартные - Служебные - Планировщик заданий

В Windows 8 достаточно ввести на начальном экране «Расписание выполнения задач» и кликнуть по плитке в результатах поиска параметров.

Перед тем, как настраивать Планировщик, нужно посмотреть включена ли его служба. Для этого нажимаем win +r (Пуск - ) и вводим services.msc .
В этом окне ищем "Планировщик заданий" и смотрим на его состояние. Оно должно быть "Работает". Если нет, то щелкаем на нем ПКМ и выбираем Запустить

Теперь приступим непосредственно к настройке Планировщика заданий .

Для Windows XP:

Запускаем, кликаем на "Добавить задание"


Появится Мастер планирования заданий в котором выбираем нужную задачу из списка, или же ищем её через Обзор...


Затем проводим всякие настройки с помощью Мастера. Ничего сложного.
В конце всех действий нужно будет ввести имя пользователя и пароль.
Имя можно узнать в Свойстве компьютера, а если пароля нет, то оставьте поле пустым.

Для Windows 7 и Windows 8:

Запускаем мастер, нажав на Создать простую задачу...


указываем имя и описание. Затем выбираем триггер. Иначе выражаясь - периодичность запуска задачи


для этого триггера можно указать дату и время задачи


выбираем действие. В данном случае выбираем "Запустить программу"


ну а теперь начинается самое интересное. В принципе можете указать как в и Windows XP - нажав на кнопку Обзор.. указав путь к исполняемому файлу программы. Но так же хочу обратить Ваше внимание на строку "Добавить аргументы". Об этом я напишу ниже.


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

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

За выключение компьютера, отвечает специальная служебная программа, которая находится на системном диске в папке \WINDOWS\system32\ и называется shutdown.exe (можете прямо сейчас её найти там и запустить. Только не удивляетесь если комп выведет сообщение о выключении).
За режим сна и гибернации отвечает программка rundll32.exe , которая находится там же.

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

Вот только XP не поддерживает аргументы и параметры. Поэтому для него нужно создать файл.

1 вариант - указываем аргументы для программы на выключение, перезагрузку, сон и гибернацию .

Выключение компьютера

программа:
аргумент: –r

Режим гибернации

программа:
аргумент: powrprof.dll,SetSuspendState 0,1,0

Режим сна

программа: C:\Windows\System32\rundll32.exe
аргумент: powrprof.dll,SetSuspendState

Показываю скрин для "Выключение компьютера" на примере Windows 7:

Вот небольшой список аргументов, которые можно использовать в ОС Windows:

- ? – вывод справки по использованию (либо без ключа)

I – отображение графического интерфейса (при использовании этот ключ ставится впереди всех);

L – выход из системы (несовместима с ключом –m);

– отмена выполнения перезагрузки/выключения;

M – применение операции к удаленному компьютеру с именем;

T N – таймер выполнения операции в N секунд;

C “комментарий” – комментарий к операции (при использовании в окне будет отображен «комментарий», в командной строке обязательно заключать его в двойные кавычки, комментарий не должен быть длиннее 127 знаков);

F – принудительное завершение работы приложений без предварительного предупреждения;

D [u] [p]:xx:yy – код причины;

u – пользовательский код;

p – запланированное завершение;

xx – основной код причины (1-255);

yy – дополнительный код причины (1-65535).

2 вариант - создаем файл с аргументами на выключение, перезагрузку, сон и гибернацию .

Тут всё довольно просто.
Создаем новый документ в Блокноте, пишем туда команду и аргумент (например я хочу перезагрузку с таймером в 16 секунд и чтобы система предварительно меня предупредила о закрытии приложений), который будет выглядеть так:


Затем сохраняем его (Файл - Сохранить как), в поле "Тип файла" выберите "Все файлы". Имя указываете любое, а должно быть bat


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

Кстати, с помощью этого Планировщика можно сделать некое подобие будильника - просто указав в качестве файла путь к музыке, а потом указать время включения на 8 утра например.

Разумеется чтобы включить компьютер, нужно его не выключать, а отправить в Сон или Гибернацию, а затем (например для будильника) во вкладке «Параметры» в его свойствах включить опцию "Разбудить компьютер для запуска этого задания" - это для Windows XP.


Для Windows 7 нужно 2 раза щелкнуть по заданию в списке и на вкладке «Условия» выбрать "Пробуждать компьютер для выполнения задачи".

Известно, что при функционировании рабочих процессов сервера 1С Предприятия 8.1 rphost.exe существует следующая проблема: из-за особенностей платформы, с подключением каждого нового клиента к рабочему процессу, увеличивается размер занимаемой рабочим процессом оперативной памяти. При этом, при отключении клиента, занимаемый при подключении объем не освобождается. Так же объем памяти, занимаемый рабочим процессом может увеличиваться при выполнении программного кода. Данное поведение называется “Утечками памяти” или “Memory Leaks”. В итоге, когда объем занимаемой памяти процессом rphost.exe вырастает больше опеределенного предела (в моем случае это было >1Gb), рабочий процесс безусловно перезапускается. Понятно, что клиенты, подключенные к этому процессу, получают сообщение, что соединение с сервером разорвано, прекращают работу и вынуждены переподключаться. В зависимости от количества пользователей и количества запущенных рабочих процессов, данная проблема возникает с той или иной частотой. В моем случае - пользователей порядка 60 и один рабочий процесс, подобная ситуация возникала до 5 раз в неделю. Т.е. ни о какой стабильной работе системы 1С Предприятие в этом случае речь не идет.

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

Второй и вполне логичный шаг - автоматический перезапуск процессов на сервере, о чем, собственно, и хочется написать.

Поскольку служба агента сервера 1С Предприятия представляет собой стандартную службу, в арсенале Windows есть стандартный способ остановки и запуска служб из командной строки командами net stop и net start. Достаточно эти команды лишь включить в bat-файл и настроить шедулер на запуск bat-файла по расписанию, я настроил перезапуск один раз в сутки, в ночное время. Следует иметь ввиду, что если перезапускать рабочие процессы в рабочее время, все подключенные к серверу 1С Предприятия клиенты будут отключены!
Кроме того, чтобы немного разнести по времени команды остановки и запуска службы, будем использовать известную утилиту sleep.exe, которую легко найти в Сети.

Примерный текст bat-файла restart1c.bat:

rem @echo off
rem \\----- начало скрипт остановки и запуска агента сервера 1С Предприятия----\\
set logfile="stopstartlog.txt"
set timeout=20
echo %date% %time% >>%logfile%
net stop "1C:Enterprise 8.1 Server Agent" >>%logfile%
c:\scripts\sleep %timeout%
echo %date% %time% >>%logfile%
net start "1C:Enterprise 8.1 Server Agent" >>%logfile%
c:\scripts\sleep %timeout%
rem \\----- конец скрипт остановки и запуска агента сервера 1С Предприятия----\\

Объяснение используемых переменных и команд:
* logfile - файл stopstartlog.txt, куда будут записываться результаты выполнения команд, размещается в том же каталоге, что и сам bat-файл;
** timeout - время в секундах;
*** c:\scripts - каталог, где предполагается разместить программу sleep.exe, bat-файл и лог-файл;

Из этого же bat-файла можно сразу после перезапуска процессов запускать скрипт бэкапа средствами 1С Предприятия. В этом случае у вас гарантированно не будет подключен ни один клиент.
Необходимая ремарка: у пользователя, под которым будет выполняться задание по перезапуску службы должны быть соответствующие права на остановку и запуск служб сервера.

Источники:

Материалы форума www.mista.ru;

Документация по платформе 1С Предприятие 8.1;

Документация по продуктам MS Windows;

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

Во всех описанных случаях вы можете выполнять эти занимающие время задачи в обычное время. Может быть ночью или пока вы находитесь на работе или в школе. Таким образом, когда вы просыпаетесь по утрам, вас встречает длинный список уязвимых машин, которые могут стать вашими целями для отработки навыков хакинга в тот же день.

К счастью Linux имеет встроенную функцию, которая позволяет выполнять такие задания по расписанию. Она называется cron или crond для демона, который запускает эти службы (демон - это просто процесс, работающий в фоновом режиме).

Как работает Cron в Linux

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

Демон cron запускается вместе с системой и продолжает работать до тех пор, пока работает сама система. Он читает файл или файлы конфигурации, описывающие его задания, т.е. те задачи, которые должны быть выполнены, и по какому расписанию запланировано их выполнение. Почти все, что мы можем делать при помощи командной строки, можно запланировать в обычном расписании с помощью cron.

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

Шаг 1. Находим Crontab

Cron - это одна из тех функций, которая почти идентична для всех дистрибутивов Linux, поэтому то, что вы узнаете здесь, можно будет использовать в Ubuntu, Red Hat, Suse, Mint, Slackware, CentOS и других. Cron является частью семейства Linux/UNIX еще с 70-х годов, поэтому он проверен, широко используется и считается надежным инструментом, поскольку на деле доказал свою ценность.

Как и многие другие вещи в Linux, функция cron управляется конфигурационным файлом, который представляет собой обычный текстовый файл. В многопользовательской среде каждый пользователь имеет свой собственный конфигурационный файл для cron, но здесь мы сосредоточимся только на пользователе root в Kali.

Конфигурационный файл cron называется crontab или «cron table» («таблица cron»). Чтобы найти файл crontab, введите в консоли:

Locate crontab

На скриншоте выше видно, что он находится в директории /etc, впрочем, как любой другой конфигурационный файл в Linux (есть исключения, конечно).

Шаг 2. Открываем crontab

Давайте откроем его и посмотрим что же у него внутри. Это делается с помощью любого текстового редактора, но в этой статье мы будем использовать графический текстовый редактор, устанавливаемый в Kali по умолчанию - Leafpad. Введите в консоли:

Leafpad /etc/crontab

Версия Debian, на которой основан Kali, имеет новую версию crontab, с которой легче работать, чем с ранними версиями. В отличие от предыдущих версий, разработчики поставили для полей поясняющие метки и добавили новое поле для обозначения пользователя, который и будет запускать задание.

Шаг 3: Анатомия Crontab

Давайте разложим crontab на части. Как видно на скриншоте выше, crontab начинается с пяти прокомментированных строк, которые начинаются с символа решетки (#). Эти строки - просто объяснения и примечания, они не читаются и не выполняются самой системой.

После этих строк вы видите такую пару строк:

Первая из них определяет ту оболочку (shell), которая будет использована для запуска заданий. В нашем случае мы назначаем оболочку BASH командой, указанной после знака равенства. Если вы хотите использовать другую оболочку, вы можете определить ее явно в этой строке:

SHELL=/bin/sh

Вторая строка задает переменную PATH. Переменная PATH является переменной среды (в Windows тоже такое есть), которая сообщает системе, где ей искать команды, используемые в задании cron. Как правило, это файлы в директориях bin и sbin (бинарные, т.е. исполняемые файлы), которые содержат системные команды, используемые в Linux (ls, echo, ps, cd и другие).

Здесь значением по умолчанию является такая строка:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Это значит, что демон cron будет искать в этих директориях те команды, которые ему нужны для выполнения запланированных вами заданий. Если вы используете команду или файл, которой нет в этих директориях, то просто отредактируйте эту строку и добавьте нужную директорию после ввода двоеточия (:). Например:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/newdir

Шаг 4. Определение задач по расписанию

Теперь идет самое «мясо» файла crontab. В третьем разделе мы как раз и планируем выполнение тех заданий, которые нужно запускать.

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

Поля файла crontab следующие:

  • Minute - определенная минута, когда команда или задание будет запущено (0-59)
  • Hour - определенный час выполнения команды или задания (0-23)
  • Day of the Month - день месяца, когда будет запущена команда или задание (1-31)
  • Month - месяц выполнения команды или задания (1-12)
  • Day of the week - день недели выполнения команды или задания (0-6, воскресенье = 0)
  • User - пользователь, который разрешает выполнение этой команды или задания
  • Command - команда или задание, которое вы хотите запускать по расписанию

Звездочка (*) представляет собой слово «любой», поэтому это может быть любой день, час или минута.

Использование Cron для поиска уязвимых серверов

Теперь давайте представим, что мы хотим просканировать весь Земной шар на предмет IP-адресов, уязвимых для Heartbleed.

Сообщается, есть больше 300 000 серверов, которые по-прежнему не пропатчены от этой уязвимости. Это очень большое число, при более чем 2 миллиардов IP-адресов по всей планете. Это количество означает, что уязвимым к этой атаке будет только 1 из 10 000 IP-адресов. Это также значит, что нам нужно настроить сканер таким образом, чтобы он повторял поиск по тысячам IP-адресов, для того, чтобы найти хотя бы один уязвимый сервер.

Это идеальная задача для работы с cron!

Шаг 5. Определение расписания для нашего Heartbleed сканера

Мы можем запланировать сканирование, чтобы оно выполнялось каждую ночь, пока мы спим, в надежде на то, что каждое утро, проснувшись, узнаем о новой потенциальной жертве!

Давайте снова откроем crontab в любом текстовом редакторе.

Теперь нам нужно добавить только одну строку, чтобы запускать наш nmap-сканер каждую неделю в 2:05 ночи. Просто добавьте эту строку в ваш файл crontab:

05 2 * * 1,2,3,4,5 root nmap -sV --script=ssl-heartbleed 68.76.0.0/16

На этой странице хочу рассказать, как создать назначенное задание в Windows 2008 и Windows 2008 R2 .

Назначенные задания служат для выполнения какой-либо задачи по расписанию. Автоматический запуск программы по расписанию настраивается в планировщике заданий, основной задачей которого является запуск программы в зависимости от определенных условий:

  • наступление определенного времени;
  • смена состояния системы (выключение, ждущий режим и т.д.);
  • ручной запуск через интерфейс планировщика заданий.

Итак, создание назначенного задания в Windows 2008:

1. Нажимаем кнопку «Пуск» и выбираем пункт «Панель управления»:

2. В появившемся окне выбираем «Администрирование»:

4. В планировщике заданий создаем простую задачу:

5. Вписываем имя нашей задачи и ее описание. Жмем «Далее»:

6. Выбираем периодичность запуска. Жмем «Далее»:

8. Выбираем действие «Запустить программу». Жмем «Далее»:

9. Жмем кнопку «Обзор» и выбираем наш исполняемый файл, запуск которого мы хотим осуществить. Жмем «Далее»:

10. Указываем галочку дополнительных настроек. Жмем «Готово»:

11. По умолчанию назначенное задание запускается от имени того, кто его создал. Если необходимо изменить пользователя, нажмите кнопку «Изменить» и выберите нового пользователя. Поставьте отметку «Выполнить с наивысшими правами» и нажмите «ОК»:

Все! Наше назначенное задание готово!



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: