Это в отношении этого вопроса.
Я хотел зарегистрироваться каждый раз, кто-то зарегистрировался на пути ansible.
Я вставил свой сценарий ~/.bash_profile
файл. Вот сценарий,
#!/bin/bash
now=$(date +"%T")
echo "$USER logged in at: $now" >> /home/alphauser/ssh-entries.log
Я поместил это в конце ~/.bash_profile
,
bash ~/ssh-login-entry.sh
Однако ansible использует неинтерактивную оболочку, таким образом, мой сценарий не выполнялся, когда я зарегистрировался на пути ansible как ~/.bash_profile
выполняется только, когда новая интерактивная оболочка запускается.
Затем я вставил это в конце .bashrc
файл, но тем не менее это не работало.
Как может я записи в журнале, когда кто-то регистрирует на пути неинтерактивную оболочку? Я имею в виду, куда я должен поместить этот сценарий так, чтобы он был выполнен каждый раз, кто-то регистрируется на пути ansible?
Я надеюсь, что вопрос ясен.
Когда удар запускается как неинтерактивная оболочка, он не читает файлов запуска. Вместо этого это ищет переменную среды $BASH_ENV
и, если это указывает на файл, чтения, на что он указывает. Это объяснено в разделе INVOCATION man bash
:
То, когда удар запускается нев интерактивном режиме, для выполнения сценария оболочки, например, он ищет переменный BASH_ENV в среде, разворачивает ее значение, если это появляется там и использует расширенное значение в качестве названия файла, чтобы читать и выполниться. Bash ведет себя, как будто следующие com ‐ mand выполнялись:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
но значение переменной ПУТИ не используется для поиска файла ‐
имя.
Так, если Вы устанавливаете BASH_ENV
для указания на файл, содержащий команду, это должно работать:
Править /etc/environment
установить BASH_ENV
для всех пользователей. Откройте файл в своем любимом редакторе и добавьте эту строку:
export BASH_ENV="/path/to/your/file"
Создать /path/to/your/file
со следующим содержанием:
printf '%s logged in at: %s\n' "$USER" "$(date +'%T')" >> /home/alphauser/ssh-entries.log
Теперь попытайтесь регистрироваться на пути ansible снова.
Важный: у Меня нет опыта с ansible, таким образом, я не совсем уверен, как Вы входите в систему с помощью него. Это предполагает, что Вы сначала запускаете нормальную оболочку входа в систему и затем выполняете команду ansible. В противном случае это, вероятно, перестанет работать. Если это не работает, отредактируйте свой вопрос и дайте больше информации о том, как Вы входите в систему через ansible.
Все логины, интерактивные и неинтерактивные, локальные и удаленные, зарегистрированы к /var/log/auth.log
. Я предлагаю, чтобы Вы использовали это вместо того, чтобы смешать с файлами запуска профиля, которые может изменить контролируемая учетная запись пользователя.