Логины дорожки сделаны через неинтерактивные оболочки

Это в отношении этого вопроса.

Я хотел зарегистрироваться каждый раз, кто-то зарегистрировался на пути 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?

Я надеюсь, что вопрос ясен.

3
задан 20 July 2017 в 01:09

2 ответа

Когда удар запускается как неинтерактивная оболочка, он не читает файлов запуска. Вместо этого это ищет переменную среды $BASH_ENV и, если это указывает на файл, чтения, на что он указывает. Это объяснено в разделе INVOCATION man bash:

То, когда удар запускается нев интерактивном режиме, для выполнения сценария оболочки, например, он ищет переменный BASH_ENV в среде, разворачивает ее значение, если это появляется там и использует расширенное значение в качестве названия файла, чтобы читать и выполниться. Bash ведет себя, как будто следующие com ‐ mand выполнялись:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi    

но значение переменной ПУТИ не используется для поиска файла ‐
имя.

Так, если Вы устанавливаете BASH_ENV для указания на файл, содержащий команду, это должно работать:

  1. Править /etc/environment установить BASH_ENV для всех пользователей. Откройте файл в своем любимом редакторе и добавьте эту строку:

    export BASH_ENV="/path/to/your/file"
    
  2. Создать /path/to/your/file со следующим содержанием:

    printf '%s logged in at: %s\n' "$USER" "$(date +'%T')" >> /home/alphauser/ssh-entries.log
    

Теперь попытайтесь регистрироваться на пути ansible снова.

Важный: у Меня нет опыта с ansible, таким образом, я не совсем уверен, как Вы входите в систему с помощью него. Это предполагает, что Вы сначала запускаете нормальную оболочку входа в систему и затем выполняете команду ansible. В противном случае это, вероятно, перестанет работать. Если это не работает, отредактируйте свой вопрос и дайте больше информации о том, как Вы входите в систему через ansible.

1
ответ дан 1 December 2019 в 17:30

Все логины, интерактивные и неинтерактивные, локальные и удаленные, зарегистрированы к /var/log/auth.log. Я предлагаю, чтобы Вы использовали это вместо того, чтобы смешать с файлами запуска профиля, которые может изменить контролируемая учетная запись пользователя.

0
ответ дан 1 December 2019 в 17:30

Другие вопросы по тегам:

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