Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Скрипт контроля времени.  (Прочитано 1076 раз)

0 Пользователей и 1 Гость просматривают эту тему.

andrey95

  • Автор темы
  • Гость
Скрипт контроля времени.
« : 21 Февраля 2010, 10:44:29 »
Здравствуйте!
Пытаюсь написать скрипт ограничения времени работы за компьютером.
#!/bin/bash
$minutes_count < parental_control_log
$current_unix_time
current_unix_time=date %s
$last_poweroff_unix_time < last_poweroff_time
if ["$current_unix_time"-"$last_poweroff_unix_time" -lt "86400" ];
then
sudo shutdown -h now
fi

while [  $minutes_count < 120 ]
do

    sleep 1m
echo $minutes_count > parental_control_log

done

Ругань следующая:
Цитировать
line 4: fg: нет управления задачей
/home/andreyshel/parent_control: line 5: last_poweroff_time: No such file or directory
/home/andreyshel/parent_control: line 6: [-: команда не найдена
/home/andreyshel/parent_control: line 11: 120: No such file or directory

Кто-то поможет осилить?



Оффлайн olgmen

  • Активист
  • *
  • Сообщений: 493
    • Просмотр профиля
Re: Скрипт контроля времени.
« Ответ #1 : 21 Февраля 2010, 10:58:03 »
Видел решение, может поможет

http://habrahabr.ru/blogs/linux/47892/

Попробуй использовать как шаблон
кто хочет, тот добьется,
кто ищет, тот всегда найдет

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Скрипт контроля времени.
« Ответ #2 : 22 Февраля 2010, 20:38:29 »
Цитировать
$current_unix_time
current_unix_time=date %s
$last_poweroff_unix_time < last_poweroff_time
if ["$current_unix_time"-"$last_poweroff_unix_time" -lt "86400" ];
все проще гораздо.
cat /proc/uptime | cut -d " " -f 1вот тебе аптайм в секундах с точностью до сотых. не хочешь тончости - точку вместо пробела в качестве разделителя
up=`cat /proc/uptime | cut -d "." -f 1`
[ "$up" -gt "3600" ] && poweroff
и все! осталось запихать сие в крон с таймером минут на 5.
лучше на "ты"

andrey95

  • Автор темы
  • Гость
Re: Скрипт контроля времени.
« Ответ #3 : 23 Февраля 2010, 14:35:34 »
А как быть если я например ребутнулся?

Оффлайн dimas000

  • Старожил
  • *
  • Сообщений: 1437
  • Ubuntu 9.10 @ 2.6.34
    • Просмотр профиля
Re: Скрипт контроля времени.
« Ответ #4 : 23 Февраля 2010, 15:34:40 »
да, тоже потом доперло. я предлагаю такую структуру: где-нибудь создается папка, например /etc/upctl
в ней куча папок формата $(date +%Y-%m-%d) , ну и в сегодняшнюю папку все-таки кидается файл, допустим, "uptime", в который пишется только числовое значение.
и тогда полный аптайм вычисляем как-то так
up="$[$(cat /proc/uptime | cut -d "." -f 1)+$(cat $upfile)]"где файл, соответственно:
upfile="/etc/upctl/$(date +%Y-%m-%d)/uptime"вот так все страшно с виду, хотя по сути просто.
естественно, все это вместе должно выполняться на уровне рута, судо тут явно не поможет. можно, пожалуй, и не париться с кроном, а оставить вариант с while...
ну, с echo "$uptime" > $upfile , думаю, сложностей на возникнет. таким образом получаем, что по превышении лимита на дневной аптайм вырубаем нафиг комп.
беда в том, что полученное изделие будет резать права всем юзерам вплоть до рута, что не есть гут. поэтому нужно еще прикрутить определение сидящего по ту сторону экрана юзера. для затравочки:
w | grep "dimas" -m 1 | tr -s [:space:] | cut -d " " -f 4вместо "dimas" пишем юзернэйм по вкусу. сие выведет время, когда юзер впервые залогинился куда-либо (обычно в иксы) в формате HH:MM, например 14:00. ну а дальше с помощью того же cut разбиваем по двоеточию на два куска, умножаем там на 24/60/сколько_надо и скалдываем. сравниваем с текущим абсоюлютным временем и получаем аптайм для конкретного юзера, что и требовалось доказать. дальше по аналогии. простор для фантазии открыт, прикладываем немножко мозга и получаем искомое. можно усложнить задачу и вынести в начало конфиг-секцию, в коей задавать в переменных лимиты для отдельных юзеров, ну и кучу прочих улучшайзеров прикрутить. если есть желание и возможность - можем вместе чего-нибудь сляпать эдакое))
мог бы и сам взяться, но у меня свой прожект в состоянии постоянного развития...
лучше на "ты"

 

Страница сгенерирована за 0.053 секунд. Запросов: 25.