죄송합니다. Linux bash 명령에 대한 저의 지식은 매우 기초적이어서 오랫동안 검색해 왔지만 무엇을 검색해야 하는지 100% 확신할 수 없습니다.
Linux bash 스크립트에서 현재 로그인한 사용자의 원격 호스트 이름을 얻을 수 있는 방법이 있는지 궁금합니다. 사용자가 실행할 때마다 로그인해야 하는 스크립트가 있습니다. 나는 다음과 같은 날짜를 얻습니다 :
cdat=`/bin/date +%a' '%d' '%h' '%Y', '%H':'%M`;
이제 원격 호스트에 사용자를 추가해야 합니다(로그인한 사용자 이름 대신). 또한 여기서 올바른 용어를 사용하고 있는지 100% 확신할 수 없습니다. "원격 호스트 이름"은 SSH를 통해 로그인하는 대부분의 서버에서 화면에 인쇄되는 것과 동일한 출력을 의미합니다.
Last login: Mon Jul 22 16:35:09 2013 from win7-i7-stuart.my.domain.com
나는 그것을 찾고 있어요 win7-i7-stuart.my.domain.com
.
답변1
who
jmcnama pts/4 Jul 18 13:30 (9010-b6m2cx1.nmgco.com)
출력이 제공하는 마지막 필드는 다음과 같습니다.
username=jmcnama
remote=$(who | awk -v user=$username '$1 == user {print $(NF)}')
사용자가 여러 번 로그인하는 등 다른 문제가 있을 수 있습니다. 마지막 명령도 도움이 됩니다. 마지막으로 문제가 있습니다. 긴 소스 노드 값이 잘릴 수 있습니다.
내가 아는 한, 로그인 소스를 보여주는 /proc "파일"은 없습니다. 마지막 데이터는 /var//log/wtmp (보통)에 저장됩니다. 따라서 이는 이 정보에 대해 문서화된 유일한 소스입니다.
답변2
중복된 정보 를 who am i
얻지 않고 그냥 일반 who
.
$ who am i
sam pts/6 2013-07-22 13:21 (192.168.1.110)
유머러스하게도 다음을 사용할 수도 있습니다.
$ who mom likes
sam pts/6 2013-07-22 13:21 (192.168.1.110)
sed
다음을 사용하여 연결된 호스트가 되도록 구문 분석할 수 있습니다 .
$ who am i | sed 's/.*(\(.*\))/\1/'
192.168.1.110
다음 명령을 사용하여 사용자 로그인의 전체 기록을 볼 수도 있습니다 last
.
$ last <username>
예를 들어:
$ last sam | less
sam pts/6 192.168.1.110 Mon Jul 22 13:21 still logged in
sam pts/6 192.168.1.110 Mon Jul 22 11:02 - 11:02 (00:00)
sam pts/5 192.168.1.110 Thu Jul 18 14:41 - 16:41 (01:59)
sam pts/5 192.168.1.110 Wed Jul 17 15:56 - 16:28 (00:31)
sam pts/5 192.168.1.110 Wed Jul 17 15:56 - 15:56 (00:00)
sam pts/4 192.168.1.110 Wed Jul 17 14:28 - 14:29 (00:00)
sam pts/7 192.168.1.110 Tue Jul 16 16:27 - 16:50 (00:23)