LINUX.ORG.RU

Блокировка включения компьютера по расписанию


0

0

Всем дня!

Передо мной возникла следующая задача: в системе Ubuntu 10.04 запретить пользователю включать компьютер с 12 часов ночи до 10 часов утра? Казалось бы, чего проще: настраиваем cron так, чтобы он каждую минуту в заданном интервале времени запускал shutdown -h. По крайней мере, это первое, что мне пришло в голову. Но, с другой стороны, выключать компьютер молча как-то не кофильфо. И я задался вопросом: как бы сделать так, чтобы на экран юзеру вылезало сообщение вида «Вы включили компьютер в неразрешённое время! Через минуту он будет выключен!»

Вот в общих чертах то, что попробовал:

- Пробовал заставить crontab водводить на экран окно терминала перед запуском shutdown. Не помогло: окно выводится, шатдаун запускается, но в этом окне никаких надписей! Я наивно думал, что широковещательное сообщение, рассылаемое shutdown, выводится на ВСЕ терминалы. Оказалось, что нет. На все, кроме запущенного кроном :)

- Пробовал запускать окно gnome-terminal или xterm и выводить через него сообщение с помощью echo или printf. Опять не получилось: xterm -e, нампример, отлично выводит сообщение, вот только сразу после выхода окно закрывается.

- Пробовал различные планировщики. Не нашёл ни одного (включая самый известный - kalarm), в котором можно было бы задать интервалы точно так же, как задаёт маска crontab, которую я использовал: «*/1 0-10 * * *».

- Пробовал ещё кучу вариаций на тему crontab, но все безуспешно, поэтому не буду здесь пеерчислять.

Чего не пробовал:

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

В итоге я остановился вот на чём: нарисовал картинку с большой красной надписью и приказал Крону выводить её на экран стандартной гномовской утилитой просмотра одновременно с запуском «shutdown -h +1» :)

Подскажите, уважаемые знатоки: может, есть какой-то более.. «кошерный» способ? :)



Последнее исправление: Drevoborod (всего исправлений: 2)

Попросить написать программку/скрипт, щапускающий халт и показывающий окошко?

Zhbert ★★★★★
()

<offtop>
Это ты так сурьезно взялся за отучение себя от видения за компом по ночам?
</offtop>

Zhbert ★★★★★
()
Ответ на: комментарий от Drevoborod

>Хорошо, вот я и прошу помочь мне с написанием такого скрипта :)

Чтобы было уж совсем Ъ, могу написать что-то подобное на qt, как до дома дойду.

Zhbert ★★★★★
()
Ответ на: комментарий от silw

Вы что?! Программы нужно ставить из репозитория, а не собирать!
Просто введите: sudo aptitude install zenity, и программа установится.

AITap ★★★★★
()
Ответ на: комментарий от AITap

zenity

> man zenity?

Ну это почти те же яйца, только сбоку :)) Тоже вывод сообщения, а отдельно - запуск shutdown. Но за идею спасибо - наверняка пригодится. Однако, вариант с программой на Qt мне больше нравится :)

Drevoborod
() автор топика
Ответ на: комментарий от silw

emerge zenity

emerge zenity

Боюсь, этого не понял. Команды emerge ни я, ни моя система не знают. А что оно должно делать? :)

Drevoborod
() автор топика
Ответ на: emerge zenity от Drevoborod

Сборка программы в Gentoo.

AITap ★★★★★
()

Скажи, зачем комп отключать? Можно того же эффекта достичь проще, запретив соответствующей учётной записи работать в это время. А комп пусть трудится, торренты^W срез репозитария обновляет.

Alan_Steel ★★
()
Ответ на: комментарий от Alan_Steel

> Скажи, зачем комп отключать? Можно того же эффекта достичь проще, запретив соответствующей учётной записи работать в это время.

Поподробнее, пожалуйста! :) Как это делается?

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

Это неактуально - компьютер специально собран для бабушки в качестве печатной машинки.

Drevoborod
() автор топика
Ответ на: Кого отучаем от Drevoborod

> Младшего брата от доступного ему компьютера :)

Может быть имеет смысл ограничивать не время когда он может быть залогинен а количество машинного времени на день, не ограничивая когда он его израсходует?

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Может быть имеет смысл ограничивать не время когда он может быть залогинен а количество машинного времени на день, не ограничивая когда он его израсходует?

интернет кафе на дому, дельныйй подход, ещё можно деньги брать с него :)

ip ★★★★
()

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

man pam_time

annoynimous ★★★★★
()
Ответ на: комментарий от annoynimous

annoynimous> Правильнее всего не перезагружать компьютер, а блокировать пользователя по времени

Проблема, если пользователь залогинится в разрешенное время, все ограничения на логин бесполезны. Пользователя надо по cron'у разлогинить, а перед этим оповестить, чтобы он «сохранился». Вернулись к исх. вопросу «как вывести граф.окошко из cron'a»

sdio ★★★★★
()

не знаю как от детей и младших братьев, но можно ( для полноты картины )
вот такой , железный , вариант http://www.mriver.org/catalog/catalog-541-1.html , розетка с таймером )

Sylvia ★★★★★
()
Ответ на: комментарий от annoynimous

annoynimous> А это уже страдствами DE решается
В идеале, наверное. А вы уверены что у пользователя есть DE?

sdio ★★★★★
()

может, подойдет notify-send?

notify-send "Сообщение"
drakmail ★★★★
()

Все коменты не читал, но кроме "-e" у xterm ещё куча опций, наприме "-hold", если не говорить о «грязных хаках», как команда «read» или «sleep 1000» в конце скрипта, выводящего сообщение.

mky ★★★★★
()
Ответ на: комментарий от mky

Мне пока всё-таки больше всего подходит вариант с БОЛЬШОЙ красной надписью, то бишь с картинкой :)) Ничего другого пока не стал реализовывать. Действительно, блокировать учётку не имеет смысла, как и назначать квоты на КОЛИЧЕСТВО времени. Объясню, почему. Дело в том, что меня не волнует, сколько времени и кто проведёт за тем компом, мне нужно лишь, чтобы комп был именно ВЫКЛЮЧЕН и нельзя было им пользоваться с 12 ночи до 10 утра. Вариант розетки с таймером, ессно, тоже не подходит - брату 18 лет, отлично справится с таким ограничением :)) А для чего мне это нужно: дело в том, что я очень чутко сплю. И, когда в соседней комнате, от которой меня отделяет самодельная картонная стенка, кто-то начинает долбить по клавишам, елозить мышью, скрипеть стулом и так далее - мне это мешает. Я попросту не могу заснуть. Поэтому мне и нужно, чтобы именно ночью никого там не было, а там никого не будет, если компьютер не будет работать :)

Drevoborod
() автор топика
Ответ на: комментарий от mky

> Все коменты не читал, но кроме "-e" у xterm ещё куча опций, наприме "-hold", если не говорить о «грязных хаках», как команда «read» или «sleep 1000» в конце скрипта, выводящего сообщение.

Не объяснишь, раз уж возникла такая тема, как передать эмулятору терминала команду на выполнение? Лучше именно xterm, потому что он для иксов универсальный, а гном-терминал есть только в гноме. Почему мне не удавалось с помощью Крона что-то запускать в графическом терминале? Опция -x имеется, но не срабатывает. Почему?

Drevoborod
() автор топика

Да, приведу здесь код, который я использовал - вдруг кому-то пригодится :) Может, для начинающих будет интересно..
Итак: Ubuntu, задача - в определённое промежуток времени при попытке включения компьютера выводить предупреждение на экран графической оболочки (Gnome) и выключать компьютер.
Добавляем в crontab следующую строку:

* 0-9 * * * export DISPLAY=:0 && /usr/bin/eog -f /usr/share/Запрещающая\ надпись.bmp | /sbin/shutdown -h +1

Как можно догадаться, у меня есть некая картинка под названием «Запрещающая надпись.bmp» (специально сделал имя с пробелом, чтобы усложнить себе задачу - учусь работать со скриптами :)), которая выводится на полный экран при помощи программы eog, после чего запускается команда shutdown -h, выключающая компьютер через минуту. При этом у юзера, разумеется, есть возможность закрыть ненужную надпись и сохранить работу, но нет возможности отменить выключение, не зная рутового пароля.

Drevoborod
() автор топика
Ответ на: комментарий от Drevoborod

Не знаю, какие у вас проблемы с xterm, у меня (в CentOS) команда

xterm -hold -e /bin/date

Выводит текущую дату и оставляет терминал открытым.

Относительно содержимого crontab, ИМХО, лучше создать свой скрипт в /usr/local/bin или где ещё и из cron'а вызывать его. С одной стороны так его удобнее отлаживать, а с другой стороны, когда ваш скрипт ещё немного вырастет, то уже будет совсем не удобно его править. А вырасти он может достаточно быстро, так как не у всех разрешено без куков цепляться с X-серверу, и может быть нужно будет устанавливать XAUTHORITY. Дальше вам может быть захочется запрещать вход только определённым пользователям...

mky ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.