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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Интересная задачка  (Прочитано 1555 раз)

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

Оффлайн Biggins

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Интересная задачка
« : 13 Мая 2012, 20:21:25 »
Всем привет, я новечек в Linuxе и на вашем форуме, так что не ругайие сильно если что)) Я использую Ubuntu 11.04 и в институте задали такое задание: Изменить конфигурационные файлы вашего командного интепритатора таким образом, чтобы формировался журнал работы пользователя с системой следущего формата:
DD.MM.YYYY (HH:MM:SS) - K1 - DD.MM.YYYY (HH:MM:SS)
DD.MM.YYYY (HH:MM:SS) - K2 - DD.MM.YYYY (HH:MM:SS)
...
Журнал пишется в файл ~/work.log и отражает дату и время начала сеанса работы пользователя, далее идет количество введенных пользователем командных строк, а затем дата и время окончания сеанса работы. Каждая строка отрожает один сеанс работы.

Я 3 дня ломаю голову как написать такой скрипт??? Ьожет кто встречался с такой задачей и смог бы помочь? Зарание спасибо!

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: Интересная задачка
« Ответ #1 : 14 Мая 2012, 11:47:19 »
В файл ~/.bashrc в конец файла внесите
export STARTSESSION=`date "+%d.%m.%Y (%H:%M:%S)"`
rm -f ~/.bash_history
history -c

В файл ~/.bash_logout в конец файла внесите
COUNTCOMMAND=`sync; history | wc -l`
export ENDSESSION=`date "+%d.%m.%Y (%H:%M:%S)"`
echo "$STARTSESSION - $COUNTCOMMAND - $ENDSESSION" >> ~/work.log
rm -f ~/.bash_history
history -c

Комментарии:
1) для тестирования работы запуск Терминала недостаточно!!! Это псевдо-терминалы, а не истинные tty.
заходите или bash -l или заходите в настоящие tty.

2) если вы введёте 4 команды, в файле ~/work.log будет цифра 5, так как выход из терминала попадает в историю команд и получается 4 введенные команды  + 1 выход = 5 команд

3) я потратил время на написание и тестирование, отблагодарите меня пожалуйста, попиарив http://vasilisc.com среди компьютерщиков вашего вуза.

Оффлайн Biggins

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Интересная задачка
« Ответ #2 : 14 Мая 2012, 13:52:37 »
Спасибо вам большое, обезательно отблагодарю!
Еще маленький вопрос, по заданию мне нужно объеденить это в скрипт, который я запускаю и он выполняется, так вот можно добавить эти строки в скрипт, что бы он выполнил добавление в конец файла bash.bashrc и bash_logout, а после ваполнения скрипта в work.log будет сохранена нужная информация? Или это сделать будет сложно? Заранее спасибо!
« Последнее редактирование: 14 Мая 2012, 14:16:50 от Biggins »

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: Интересная задачка
« Ответ #3 : 14 Мая 2012, 16:02:12 »
Спасибо вам большое, обезательно отблагодарю!
Еще маленький вопрос, по заданию мне нужно объеденить это в скрипт, который я запускаю и он выполняется, так вот можно добавить эти строки в скрипт, что бы он выполнил добавление в конец файла bash.bashrc и bash_logout, а после ваполнения скрипта в work.log будет сохранена нужная информация? Или это сделать будет сложно? Заранее спасибо!
как то так
#!/bin/sh

cat >> ~/.bashrc <<EOL
export STARTSESSION=\`date "+%d.%m.%Y (%H:%M:%S)"\`
rm -f ~/.bash_history
history -c
EOL

cat >> ~/.bash_logout <<EOL
COUNTCOMMAND=\`sync; history | wc -l\`
export ENDSESSION=\`date "+%d.%m.%Y (%H:%M:%S)"\`
echo "\$STARTSESSION - \$COUNTCOMMAND - \$ENDSESSION" >> ~/work.log
rm -f ~/.bash_history
history -c
EOL



Оффлайн Biggins

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Интересная задачка
« Ответ #4 : 14 Мая 2012, 17:09:07 »
Спасибо, насчет пиара, я никогда не делал этого, зашел на сайт, какие мои действия дальше? :-[ Извеняюсь за глупый вопрос наверно... ;D

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: Интересная задачка
« Ответ #5 : 14 Мая 2012, 20:55:37 »
Спасибо, насчет пиара, я никогда не делал этого, зашел на сайт, какие мои действия дальше? :-[ Извеняюсь за глупый вопрос наверно... ;D
просто расскажите сокурсникам и дайте адрес сайта =Ъ

Оффлайн Biggins

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Интересная задачка
« Ответ #6 : 15 Мая 2012, 11:56:09 »
Это я уже сделал ;) ;D Я начал разбираться коде, а вы немогли бы подсказать, что мы делаем этими командами COUNTCOMMAND=`sync; history | wc -l` и rm -f ~/.bash_history
history -c ?? Зарание спасибо!

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: Интересная задачка
« Ответ #7 : 16 Мая 2012, 14:49:28 »
1 COUNTCOMMAND=`sync; history | wc -l`
2 export ENDSESSION=`date "+%d.%m.%Y (%H:%M:%S)"`
3 echo "$STARTSESSION - $COUNTCOMMAND - $ENDSESSION" >> ~/work.log
4 rm -f ~/.bash_history
5 history -c

1 - sync - скидываем буфера в памяти на диск  history | wc -l   вызывает историю команд за 1 сеанс и посчитывает их количество (-l), так как 1 строка = 1 команде
2 узнаём сколько счас времени - это окончание сеанса
3 пишем в нужном в виде в файл ~/work.log
4 удаляем файл истории чтобы в следующем сеансе старая история не приплюсовалась к новому сеансу
5 чистим историю еще и другим способом

Оффлайн Biggins

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Интересная задачка
« Ответ #8 : 16 Мая 2012, 15:25:43 »
Спасибо ;)

 

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