SSH 서버에서 연결된 클라이언트 IP 주소를 얻고 싶습니다. 나는 기록된 정보(클라이언트의 IP 주소 포함)를 사용 $ who
하거나 얻을 수 있습니다.$ w
쉘 스크립트에서 사용하기 위해 클라이언트의 IP 주소(한 가지)를 원합니다.
답변1
환경 변수의 일부로 제공됩니다 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
모든 사용자가 시도해보십시오
w --no-header | awk '{print $1" "$3}'
요컨대
w -h | awk '{print $1" "$3}'
여기서 grep을 통해 사용자 이름을 찾을 수 있습니다. 사용자는 다양한 위치/IPS에서 여러 번 로그인할 수 있다는 점을 명심하세요. 또한 w 명령이 호스트 이름 대신 IP를 출력하도록 강제할 수 있는지 확인하고 싶습니다(버전 -n 또는 -i에 따라 다름).
어쩌면 로컬 로그인(콘솔)도 필터링해야 할 수도 있습니다.
답변3
또 다른 방법은 netstat
및 를 사용하는 것입니다 awk
. 프로토콜 포트 22를 사용한다고 가정합니다 ssh
.
netstat -putan | awk '/:22 / && /ESTABLISHED/ {split($5,result,":"); print result[1]}'