Возможно ли Linux настороить так, чтобы записывалось в некий файл история: дата и время открытия программы и дата и время ее закрытия?
Накатай для проги обёртку которая будет это делать.
>Накатай для проги обёртку которая будет это делать.Если можете напишите, пожалуйста, пошаговый алгоритм как это сделать. К сожалению, всегда работал раньше с Windows и понимаю в Linux щчень мало. У меня FedoraCore 5 - Gnome. Нужно мониторить Firefox.
>>Накатай для проги обёртку которая будет это делать.
>
>Если можете напишите, пожалуйста, пошаговый алгоритм как это сделать. К сожалению, всегда
>работал раньше с Windows и понимаю в Linux щчень мало. У
>меня FedoraCore 5 - Gnome. Нужно мониторить Firefox.
переименовываешь прогу, пишешь скрипт который в начале сохраняет дату/время в нужный файл, потом стартуешь переименованную прогу из скрипта, после окончания работы она вернёт управление скрипту, потом опять скидываешь нужные данные в файл.Фокс и так скриптом пускается - правь его под свои нужды
>Фокс и так скриптом пускается - правь его под свои нуждыЧто это за скрипт? Где он лежит? Как его можно посмотреть?
>>Фокс и так скриптом пускается - правь его под свои нужды
>
>Что это за скрипт? Где он лежит? Как его можно посмотреть?1. which firefox (ответ напр. /usr/bin/firefox)
2. mv /usr/bin/firefox /usr/bin/firefox.orig
3. mc -e /usr/bin/firefox (открываешь на редактирование)
пишешь
#!/bin/sh
LOG_FILE=/usr/local/log/firefox.log
echo "$USER" >> $LOG_FILE
echo "start: " >> $LOG_FILE
date >> $LOG_FILE
/usr/bin/firefox.orig
echo "finish: " >> $LOG_FILE
date >> $LOG_FILE
echo "--------";
####################
+ команды
chmod a+rx /usr/bin/firefox
mkdir /usr/local/log/
chmod a+rw /usr/local/log/
####################
небольшая поправочка:
############### этот текст должен быть в файле firefox ###
>#!/bin/sh
>LOG_FILE=/usr/local/log/firefox.log
>echo "$USER" >> $LOG_FILE
>echo "start: " >> $LOG_FILE
echo -n "start: " >> $LOG_FILE
>date >> $LOG_FILE
>/usr/bin/firefox.orig
>echo "finish: " >> $LOG_FILE
echo -n "finish: " >> $LOG_FILE
>date >> $LOG_FILE
>echo "--------";
################################## end of file ###
Спасибо за хооший ответ. Особенно за комментарии к коду. Это помогает разобраться - очень.
Все работает.
Одна проблема, правда, появилась. Стали некорректно работать ярлыки с рабочего стола не ресурсы в интернете - браузер открывается не на той странице на которую ссылается ярлык, а на домашней странице самого брайзера.
Почему так? Как можно это исправить?
>Спасибо за хооший ответ. Особенно за комментарии к коду. Это помогает разобраться
>- очень.
>Все работает.
>Одна проблема, правда, появилась. Стали некорректно работать ярлыки с рабочего стола не
>ресурсы в интернете - браузер открывается не на той странице на
>которую ссылается ярлык, а на домашней странице самого брайзера.
>Почему так? Как можно это исправить?
судя по всему ярлыки имеют вид: firefox http://www.сайт.ru
стало быть надо передать параметры в скрипт...
>/usr/bin/firefox.orig
/usr/bin/firefox.orig $1 $2 $3 $4
>судя по всему ярлыки имеют вид: firefox http://www.сайт.ru
>стало быть надо передать параметры в скрипт...
>>/usr/bin/firefox.orig
>/usr/bin/firefox.orig $1 $2 $3 $4Действительно это помогло - ссылки открываются корректно. Спасибо.
Пожалуйста, объясните еще, что означают эти все параметры.
>>судя по всему ярлыки имеют вид: firefox http://www.сайт.ru
>>стало быть надо передать параметры в скрипт...
>>>/usr/bin/firefox.orig
>>/usr/bin/firefox.orig $1 $2 $3 $4
>
>Действительно это помогло - ссылки открываются корректно. Спасибо.
>Пожалуйста, объясните еще, что означают эти все параметры.если Вы из командной строки вызываете shell-скрипт с аргументами:
prog.sh arg1 arg2
то $0 - имя вызывающего скрипта
$1,$2... = arg1,arg2...
----
пример: test.sh
#!/bin/shecho $1
----
вызов:
[...] sh ./test.sh aaaaaa
ответ:
aaaaaa
-------
>/usr/bin/firefox.orig $1 $2 $3 $4Лучше все-таки так:
/usr/bin/firefox.orig "$@"
>>/usr/bin/firefox.orig $1 $2 $3 $4
>
>Лучше все-таки так:
>
>/usr/bin/firefox.orig "$@"Пожалйста, дайте разъяснения почему? К сожалению не понимаю, что означают эти аргументы? В чем разница и что означают эти аргументы? Почему второй вариант лучше?
>>>/usr/bin/firefox.orig $1 $2 $3 $4
>>
>>Лучше все-таки так:
>>
>>/usr/bin/firefox.orig "$@"
>
>Пожалйста, дайте разъяснения почему? К сожалению не понимаю, что означают эти аргументы?
>В чем разница и что означают эти аргументы? Почему второй вариант
>лучше?он просто грамотнее...
$1 $2 $3 $4 - в этих переменных содержаться значения 4-х передаваемых аргументов
$@ - это сразу все аргументы
[kvk@KVK aaa]$ script a1 a2 a3
$1 == 'a1'
$2 == 'a2'...
$@ == 'a1 a2 a3'
----
грамотнее потому, что аргументов может быть более 4-х. Используя $@ не потеряешь передаваемых аргументов...
>>>>/usr/bin/firefox.orig $1 $2 $3 $4
>>>
>>>Лучше все-таки так:
>>>
>>>/usr/bin/firefox.orig "$@"
>>
>>Пожалйста, дайте разъяснения почему? К сожалению не понимаю, что означают эти аргументы?
>>В чем разница и что означают эти аргументы? Почему второй вариант
>>лучше?
>
>он просто грамотнее...
>$1 $2 $3 $4 - в этих переменных содержаться значения 4-х передаваемых
>аргументов
>$@ - это сразу все аргументы
>[kvk@KVK aaa]$ script a1 a2 a3
>$1 == 'a1'
>$2 == 'a2'...
>$@ == 'a1 a2 a3'
>----
>грамотнее потому, что аргументов может быть более 4-х. Используя $@ не потеряешь
>передаваемых аргументов...Спасибо, большое. Я очень приятно был порадован ответами на этом форуме.
$@ - обязательно должен быть в двойных кавычках?
>Спасибо, большое. Я очень приятно был порадован ответами на этом форуме.
>$@ - обязательно должен быть в двойных кавычках?В общем случае - да. За разъяснениями предлагаю обратиться к man sh, либо к странице руководства используемого Вами shell. Ну и в сети много документации, поищите.
Если я правильно понимаю, то файл лога должен быть для такого скрипта доступен на запись а это в свою очередь позволяет пользователю, который запускает веб-браузер, отредактировать файл (стереть, добавить записи). Как можно это исключить?
>Если я правильно понимаю, то файл лога должен быть для такого скрипта
>доступен на запись а это в свою очередь позволяет пользователю, который
>запускает веб-браузер, отредактировать файл (стереть, добавить записи). Как можно это исключить?
>
Напр.использовать sudoecho "$USER" >> $LOG_FILE
echo "start: " >> $LOG_FILE
date >> $LOG_FILE
# это перенести в отдельный скрипт (/usr/local/bin/log1.sh)echo "finish: " >> $LOG_FILE
date >> $LOG_FILE
# это перенести в отдельный скрипт (/usr/local/bin/log2.sh)тогда текст будет:
sudo /usr/local/bin/log1.sh
/usr/bin/firefox.orig
sudo /usr/local/bin/log2.shи исправить файлик sudoers (у меня /etc/sudoers) на выполнение этих 2-х скриптов для группы, в которую поместить всех пользователей...
----
права на LOG_FILE сделать chmod 600, chown root
>и исправить файлик sudoers (у меня /etc/sudoers) на выполнение этих 2-х скриптов
>для группы, в которую поместить всех пользователей...Как должна приблизительно выглядить строка в этом файле?
>права на LOG_FILE сделать chmod 600, chown root
chown root - это владелиц файла?
chmod 600 - ?
Владелец - rwx
Группа - rwx
Прочие - rwx
Как должны быть эти права расставлены?Извините, за элементарные вопросы. Но они меня возникают. Спасибо за помощь.
>>и исправить файлик sudoers (у меня /etc/sudoers) на выполнение этих 2-х скриптов
>>для группы, в которую поместить всех пользователей...
>
>Как должна приблизительно выглядить строка в этом файле?
там есть образец:
%yourgroup ALL=/usr/local/bin/log1.sh,/usr/local/bin/log2.shсм. также:
http://www.opennet.me/man.shtml?topic=sudo&category=8&russian=0
http://www.opennet.me/cgi-bin/opennet/man.cgi?topic=sudoers&...причем дайте нормальные права на /usr/local/bin/log1.sh,/usr/local/bin/log2.sh, чтобы user'ы могли читать-исполнять, но не писать (chmod 755)
>>права на LOG_FILE сделать chmod 600, chown root
>
>chown root - это владелиц файла?
>chmod 600 - ?
>Владелец - rwx
>Группа - rwx
>Прочие - rwx
>Как должны быть эти права расставлены?
сделайте
chown root <LOG_FILE>
chmod 600 <LOG_FILE>
ls -l <LOG_FILE>
-rw---- root <LOG_FILE>>Извините, за элементарные вопросы. Но они меня возникают. Спасибо за помощь.
>
Тепрь идентификация пользователя потеряна, т.к. он, если я правильно понимаю выполняет скрипт не от своего имени - пишется в лог root - как значение переменной $USER
>Тепрь идентификация пользователя потеряна, т.к. он, если я правильно понимаю выполняет скрипт
>не от своего имени - пишется в лог root - как
>значение переменной $USERпроверить это можно вставив в прогу:
echo $USER
---
если действительно "потерян" user, то это решается так:
в firefox в началоexport REAL_USER=$USER
потом оперировать не $USER, а $REAL_USER
>проверить это можно вставив в прогу:
>echo $USERПри запуске скрипта firefox значение переменной $USER - реальный пользователь
>если действительно "потерян" user, то это решается так:
>в firefox в начало
>
>export REAL_USER=$USERREAL_USER присваивается значение рельного пользователя, но оно не передается в скрипт log1.sh
пробовал добавить после вызыва скрипта $REAL_USER или $1 $2 - ничего не помогает.Как передать значение переменной REAL_USER в скрипт log1.sh?
>потом оперировать не $USER, а $REAL_USER
>>проверить это можно вставив в прогу:
>>echo $USER
>
>При запуске скрипта firefox значение переменной $USER - реальный пользователь
>
>>если действительно "потерян" user, то это решается так:
>>в firefox в начало
>>
>>export REAL_USER=$USER
>
>REAL_USER присваивается значение рельного пользователя, но оно не передается в скрипт log1.sh
>
>пробовал добавить после вызыва скрипта $REAL_USER или $1 $2 - ничего не
>помогает.
>
>Как передать значение переменной REAL_USER в скрипт log1.sh?
>
>>потом оперировать не $USER, а $REAL_USERдаже export не помагает?
тогда:
/usr/local/bin/log1.sh =>
/usr/local/bin/log1.sh $REAL_USER
В файл:
/usr/local/bin/log1.sh
USER=$1
или
USER2=$1 и далее оперировать не $USER, а $USER2
Все заработало! Спасибо.Есть еще один вопрос. Запуск веб-браузера через такой скрипт приводит почему-то к тому, что во время загрузки веб-браузера курсор мыши не меняется на символ "процесса выполнения некой работы". Пользователь начинает думать, что он не задал команду запуска программы и снова запускает программу.
Почему так и стало и можно ли это исправить?
>Все заработало! Спасибо.
>
>Есть еще один вопрос. Запуск веб-браузера через такой скрипт приводит почему-то к
>тому, что во время загрузки веб-браузера курсор мыши не меняется на
>символ "процесса выполнения некой работы". Пользователь начинает думать, что он не
>задал команду запуска программы и снова запускает программу.
>Почему так и стало и можно ли это исправить?
Этого я не понял... Или поподробнее опишите проблему (начиная с того как именно user запускает броузер...) или создайте новую тему.
скорее всего - Вы фигней занимаетесь. Не вижу смысла в том, что Вы пытаетеь сделать...
Но: с точки зрения умения писать элементарные shell-скрипты - это весьма полезно. так что тренируйтесь-разбирайтесь...
Отличные цены. Все четко. Большое спасибо. Обязательно если что-то появится отпишусь. http://www.russok.ru это тоже Ваш проект?