SSH 를 사용하여 서버에 로그인하는 사람이 실행할 스크립트가 있습니다 .
사용자가 연결 한 IP 주소를 자동으로 찾는 방법이 있습니까?
물론 사용자에게 요청할 수는 있지만 (프로그래머에게는 도구이므로 아무런 문제가 없습니다), 방금 알면 더 시원해질 것입니다.
답변
다음과 같은 환경 변수가 있는지 확인하십시오.
$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
답변
다음 명령을 사용할 수 있습니다.
server:~# pinky
그것은 당신에게 다음과 같은 somehting을 줄 것입니다 :
Login Name TTY Idle When Where
root root pts/0 2009-06-15 13:41 192.168.1.133
답변
IP 주소 만 얻으려면 다음을 시도하십시오.
who am i|awk '{ print $5}'
답변
Linux 시스템에서 다음 명령을 입력하십시오.
who
답변
who | cut -d"(" -f2 |cut -d")" -f1
답변
who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'
export DISPLAY=`who am i | awk '{print $5}' | sed 's/[()]//g' | cut -f1 -d "." | sed 's/-/./g'`:0.0
이것을 사용하여 ssh를 통해 로그인 할 때 세션의 DISPLAY 변수를 결정하고 원격 X를 표시해야합니다.
답변
사전 답변 개선. 호스트 이름 대신 IP 주소를 제공합니다. –ip는 OS X에서 사용할 수 없습니다.
who am i --ips|awk '{print $5}' #ubuntu 14
보다 보편적 인 OS X 10.11의 경우 5 달러에서 6 달러로 변경 :
WORKSTATION=`who -m|awk '{print $5}'|sed 's/[()]//g'`
WORKSTATION_IP=`dig +short $WORKSTATION`
if [[ -z "$WORKSTATION_IP" ]]; then WORKSTATION_IP="$WORKSTATION"; fi
echo $WORKSTATION_IP
