쉘 스크립트를 사용하여 SSH 클라이언트 IP 주소를 얻는 방법은 무엇입니까? [복사]

쉘 스크립트를 사용하여 SSH 클라이언트 IP 주소를 얻는 방법은 무엇입니까? [복사]

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]}'

관련 정보