Está disponível como parte da variável de ambiente SSH_CLIENT
:
$ echo "$SSH_CLIENT"
SSH_CLIENT=192.168.0.101 39323 22
$ echo "$SSH_CLIENT" | cut -d' ' -f 1
192.168.0.101
No servidor SSH,
Eu quero obter o endereço IP do cliente conectado.
eu uso
$ who
ou $ w
pode obter informações registradas (incluir endereço IP do cliente)
Eu só quero o endereço IP do cliente (uma coisa), use no shell script
Está disponível como parte da variável de ambiente SSH_CLIENT
:
$ echo "$SSH_CLIENT"
SSH_CLIENT=192.168.0.101 39323 22
$ echo "$SSH_CLIENT" | cut -d' ' -f 1
192.168.0.101
Para todos os usuários, tente
w --no-header | awk '{print $1" "$3}'
Em suma
w -h | awk '{print $1" "$3}'
Lá você pode encontrar o nome de usuário. Lembre-se de que um usuário pode efetuar login várias vezes e em diferentes locais / IPS. Você também deseja verificar se pode forçar o comando w a gerar IPs em vez de nomes de host (depende da versão -n ou -i)
Provavelmente você também precisa filtrar logins locais (console)
Outra maneira é usar netstat
e awk
. Supondo que você esteja usando a porta 22 para o protocolo ssh
:
netstat -putan | awk '/:22 / && /ESTABLISHED/ {split($5,result,":"); print result[1]}'
Tags shell-script