Определить пользователь ли запустил скрипт?

Здравствуйте.
Есть Arch Linux (желательно, что бы работало на всех дистрах) и есть python скрипт.
Требуется определить запущен скрипт из пользовательского шела (из под рута) или по крону (крон тоже рутовый). Есть ли какие то различия в окружении, который могут помочь решить эту задачу?
Спасибо.
  • Вопрос задан
  • 3543 просмотра
Решения вопроса 2
@justthefish
https://docs.python.org/2/library/getpass.html
import getpass
current_user = getpass.getuser()


Но для целей безопасности использовать это нельзя, т.к. проверяются переменные окружения, которые легко подделать.
Ответ написан
Комментировать
@FaktorX
можно выяснить банальным bash скриптом
export script_name=my_script
if [ $( for i in $( ps -ef|grep ${script_name} |awk '{print $3}'); do ps -ef | grep $i|grep cron|grep -v grep; done|wc -l ) -eq 0 ]; then echo "run by user"; else echo "run by cron";fi
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rpsl
@Rpsl
Кратко о себе
Пропишите в крон скрипт с параметром и проверяйте наличие параметра.
Ответ написан
lesovsky
@lesovsky
System engineer and PostgreSQL DBA
Здравствуйте.

>> Требуется определить запущен скрипт из ...
Кем требуется определить? сам скрипт должен определить каким образом он запущен или это должен определять какой-то другой левый скрипт??

Так или иначе, скрипты запущенные из под залогиненного юзера и крона будут отличаться набором переменных окружений, так что попробуйте использовать их, например SHLVL (переменные хранятся в /proc/$$/environ).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы