1

Мне интересно, есть ли метод или программа, которая может контролировать передачу файлов SSH и отправлять электронную почту, когда файл (входящий) был передан?

(Другой альтернативой было бы, по крайней мере, получить уведомление, когда кто-то входит в систему через SSH, хотя было бы идеально, если бы электронное письмо содержало информацию о том, какой файл был передан)

Кроме того, как можно проверить, чтобы увидеть активных пользователей, которые занимаются передачей файлов SSH?

Я понимаю, что это вопрос OSX, но я подумал, что он больше подходит для сайта SuperUser. Пожалуйста, проголосуйте, чтобы перейти, если я ошибаюсь :)

2 ответа2

2

Чтобы проверить, какие пользователи имеют активный сеанс SFTP прямо сейчас, вы можете посмотреть процесс sftp-server . Обратите внимание, что наличие процесса не обязательно означает, что они в настоящее время передают файлы.

$ ps uax | grep '[s]ftp-server'
1000     15115  0.0  0.0  12532   728 ?        Ss   14:38   0:00 /usr/lib/openssh/sftp-server

(Если вам интересно, квадратные скобки в шаблоне используются как "хак", чтобы скрыть саму команду grep от вывода.)

Сценарий оболочки (bash)

#!/usr/bin/env bash

pids=$(pgrep -x sftp-server)
users=()

for pid in "${pids[@]}"; do
    users+=("$(ps --no-headers -o user 15115)")
done

echo "Users with active SFTP sessions: ${users[*]}"

Если вы хотите вывести по одному пользователю на строку, замените последнюю строку на следующую:

echo "Users with active SFTP sessions:"
echo
for user in "${user[@]}"; do
    echo "$user"
done

В качестве альтернативы вы можете использовать файловую систему /proc вместо зависимости от pgrep . Это не подробно в этом ответе.

0

Это пример сценария для отправки пользовательского сообщения по электронной почте.

echo "User $USER just logged in * $(date '+%d-%m-%Y %T') |
    sendmail -q -u "SSH Login" -f 'Originator <from@address.com>' \
             -t 'Your Name <your.email@domain.com>' -s smtp.server.com &

Для отправки электронной почты вам понадобится установленный пакет sendmail . Прочитайте справочную страницу sendmail для более подробной информации.

Вы можете поместить подобный скрипт в .bash_login желаемого пользователя, чтобы вы получали уведомление по электронной почте всякий раз, когда человек использует вход в систему через терминал, и вход в систему успешен. (SSH использует логин терминала)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .