Ssh входят в рычаг?

Это - то, как я начал делать это также, но стал намного более сложным с ним. Пара вещей, которые будут касаться в:

  1. Если хвост журнала уже содержит "сервер, произошел".
  2. Автоматически окончание хвоста обрабатывает, после того как это найдено.

Я использую что-то вроде этого:

RELEASE=/tmp/${RANDOM}$$
(
  trap 'false' 1
  trap "rm -f ${RELEASE}" 0
  while ! [ -s ${RELEASE} ]; do sleep 3; done
  # You can put code here if you want to do something
  # once the grep succeeds.
) & wait_pid=$!
tail --pid=${wait_pid} -F /path/to/serverLog \
| sed "1,10d" \
| grep "server is up" > ${RELEASE}

Это работает путем содержания tail открытый до ${RELEASE} файл содержит данные.

Однажды grep следует за ним:

  1. пишет вывод в ${RELEASE} который будет
  2. завершите ${wait_pid} процесс к
  3. выйдите tail

Примечание: sed может быть более сложным для фактического определения количества строк tail произведет при запуске и удалении того числа. Но обычно, это 10.

15
14.02.2011, 17:28
2 ответа

Для всех пользователей или конкретного пользователя? Для отдельного пользователя, набор это в их .bashrc файл; для всех пользователей проверьте pam_exec.

Если пользователи входят от sshd, Вы захотите добавить следующую строку к /etc/pam.d/sshd; другие файлы в зависимости от их источника:

session optional pam_exec.so seteuid  /path/to/my/hook.sh

Для тестирования модуль включен как optional, так, чтобы можно было все еще войти в систему, если это перестало работать. После того, как Вы удостоверились, что это работает, можно измениться optional кому: required. Затем вход в систему не будет возможен, если выполнение Вашего сценария рычага не будет успешно.

Примечание: Как всегда при изменении конфигурации входа в систему оставьте резервную оболочку открытой в фоновом режиме и протестируйте вход в систему от нового терминала.

11
27.01.2020, 19:50
  • 1
    Спасибо, который выглядит многообещающим. Можно ли уточнить немного больше? Я незнаком с этим. –  phunehehe 14.02.2011, 18:05
  • 2
    я предполагаю, что должен добавить session include pam_exec.so seteuid /path/to/script в файл /etc/pam.d/system-remote-login. Это корректно? –  phunehehe 14.02.2011, 18:07
  • 3
    Также system-remote-login или sshdВ зависимости от того, как входит пользователь. –  Glen Solsberry 14.02.2011, 18:07
  • 4
    Потрясающий! Было бы замечательно при редактировании ответа для включения информации (Вы знаете для других, которые ищут его). –  phunehehe 14.02.2011, 18:13
  • 5
    Отметьте людям, гуглящим, можно также поместить эту строку auth optional pam_exec.so /path/to/my/hook.sh в /etc/pam.d/common-auth чтобы иметь PAM уведомляют Вас относительно ЛЮБЫХ событий аутентификации, которые происходят. Эта программа может также отправить Вам уведомления о нажатии: github.com/benjojo/PushAlotAuth –  Nick Sweeting 29.01.2016, 23:10

существует иначе, который только влияет на пользователей, использующих ssh не локальные (который мог бы быть лучше в чрезвычайных ситуациях),

посмотрите отрывки из ssh страницы справочника ниже.

в этом случае пользователи могут обычно изменять сами файлы (немного как .bashrc)

 ~/.ssh/rc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.

и это является глобальным и не модифицируемым обычным пользователем

 /etc/sshrc
         Commands in this file are executed by ssh when the user logs in, just before the user's shell (or command) is started.  See the sshd(8) manual page for more information.
6
27.01.2020, 19:50
  • 1
    Но/etc/sshrc будет выполняться, только если у пользователя нет собственного ~/.ssh/rc, таким образом, этот пользователь может обойти –  isevcik 07.02.2013, 23:02

Теги

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