Bash 스크립트에서 원격 호스트 이름 가져오기

Bash 스크립트에서 원격 호스트 이름 가져오기

죄송합니다. 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)

인용하다

관련 정보