Я знаю, что это довольно старый вопрос,
Но я просто наткнулся на него и нашел довольно неплохую статью , которая также имеет прекрасный пример в github ].
В основном он использует @ControllerAdvice
, как предполагает документация Spring.
Так, например, перехват ошибок 400 будет достигнут путем переопределения одной функции:
@ControllerAdvice
public class CustomRestExceptionHandler extends ResponseEntityExceptionHandler {
@Override
protected ResponseEntity
(класс ApiError - простой объект для хранения состояния, сообщения, ошибок)
Проверьте, существует ли переменная среды с именем:
$SSH_CLIENT
ИЛИ
$SSH_CONNECTION
(или любые другие переменные среды), которая устанавливается при входе пользователя в систему. Затем обработайте ее с помощью сценария входа пользователя .
Извлеките IP-адрес:
$ echo $SSH_CLIENT | awk '{ print $1}'
1.2.3.4
$ echo $SSH_CONNECTION | awk '{print $1}'
1.2.3.4
Предполагая, что он открывает интерактивный сеанс (то есть выделяет псевдотерминал ) и у вас есть доступ к стандартному вводу, вы можете вызвать ioctl на этом устройстве , чтобы получить номер устройства (/ dev / pts / 4711) и попытаться найти его в / var / run / utmp (где также будут имя пользователя и IP-адрес, с которого возникло соединение ).
Вы можете использовать команду:
server:~# pinky
, которая даст вам что-то вроде этого:
Login Name TTY Idle When Where
root root pts/0 2009-06-15 13:41 192.168.1.133
Обычно есть запись журнала в / var / log / messages (или аналогичная, в зависимости от вашей ОС), которую вы можете найти с помощью поиска по имени пользователя.