Para verificar quais usuários têm uma sessão SFTP ativa agora, você pode procurar pelo processo sftp-server
. Observe que a presença do processo não significa necessariamente que eles estejam transferindo arquivos no momento.
$ ps uax | grep '[s]ftp-server'
1000 15115 0.0 0.0 12532 728 ? Ss 14:38 0:00 /usr/lib/openssh/sftp-server
(Caso você queira saber, os colchetes no padrão são usados como um "hack" para ocultar o próprio comando grep da saída.)
Script de shell (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[*]}"
Se você deseja enviar um usuário por linha, substitua a última linha por:
echo "Users with active SFTP sessions:"
echo
for user in "${user[@]}"; do
echo "$user"
done
Como alternativa, você pode usar o sistema de arquivos /proc
em vez de depender de pgrep
. Isso não está detalhado nesta resposta.