Как получить IP-адрес клиента SSH с помощью сценария оболочки?

Связано:

Идея заключается в том, что вы создаете цикл перенаправления, но на самом деле это не так. , так как есть разница между внешними и внутренними перенаправлениями, поэтому цикл не является замкнутым, потому что одно перенаправление явно только внешнее, а другое явно только внутреннее:

location = / {
    if ($arg_site) {
        return  302 /$arg_site;
    }
    return  200
    "site
    
\n"; } location / { rewrite ^/([^/]*)\$ /?site=$1 break; proxy_pass http://javabackend:8080; }

0
10.11.2016, 09:10
3 ответа

Другой способ - использовать netstat и awk . Предполагая, что вы используете порт 22 для протокола ssh :

netstat -putan | awk '/:22 / && /ESTABLISHED/ {split($5,result,":"); print result[1]}'
0
28.01.2020, 02:27

Оно доступно как часть переменной среды SSH_CLIENT :

$ echo "$SSH_CLIENT"
SSH_CLIENT=192.168.0.101 39323 22
$ echo "$SSH_CLIENT" | cut -d' ' -f 1
192.168.0.101
2
28.01.2020, 02:27

Для всех пользователей попробуйте

w --no-header | awk '{print $1" "$3}'

Вкратце

w -h | awk '{print $1" "$3}'

Там вы можете grep для имени пользователя. Имейте в виду, что пользователь может входить в систему несколько раз и из разных мест / IPS. Вы также хотите проверить, можете ли вы заставить w-команду выводить IP вместо имен хостов (зависит от версии -n или -i)

Возможно, вам также придется отфильтровать локальные логины (консоль)

1
28.01.2020, 02:27

Теги

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