Obtendo o nome do host remoto no script bash

4

Desculpe o meu conhecimento dos comandos bash do Linux é bastante básico, eu tenho procurado por um tempo, mas não tenho 100% de certeza do que preciso pesquisar.

Eu queria saber se há uma maneira de pegar o atual nome do host remoto de usuários logados em um script bash do Linux? Eu tenho um script no qual eu preciso registrar cada vez que um usuário o executa. Estou obtendo a data assim:

cdat='/bin/date +%a' '%d' '%h' '%Y', '%H':'%M';

Agora preciso adicionar o host remoto aos usuários (não o nome de usuário com o qual eles se conectaram). Não estou 100% certo de que estou usando a terminologia correta aqui, apenas para esclarecer; por 'nome do host remoto' quero dizer a mesma saída que imprime na tela na maioria dos servidores que eu fiz logon no ssh, por exemplo:

Last login: Mon Jul 22 16:35:09 2013 from win7-i7-stuart.my.domain.com

Estou procurando o win7-i7-stuart.my.domain.com bit.

    
por Stu 22.07.2013 / 17:28

2 respostas

2

É melhor usar o comando who am i para que você não obtenha as informações duplicadas e tenha que analisá-las ao usar apenas um who simples.

$ who am i
sam      pts/6        2013-07-22 13:21 (192.168.1.110)

Humourously você também pode usar isso:

$ who mom likes
sam      pts/6        2013-07-22 13:21 (192.168.1.110)

Você pode analisá-lo usando sed para que seja apenas o host do qual eles estão se conectando:

$ who am i | sed 's/.*(\(.*\))//'
192.168.1.110

Você também pode ver todo o histórico de logins de um usuário usando o comando last :

$ last <username>

Por exemplo:

$ 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)

Referências

por 22.07.2013 / 19:26
4
who
jmcnama    pts/4        Jul 18 13:30    (9010-b6m2cx1.nmgco.com)

O último campo da saída de quem fornece:

username=jmcnama
remote=$(who | awk -v user=$username '$1 == user {print $(NF)}')

Pode haver outros problemas, como o login do usuário várias vezes. O último comando pode ajudar também. last has problem - pode truncar valores longos de nós de origem.

Até onde eu sei, não existe um "arquivo" / proc que mostre a origem do login. Último e quem dados são armazenados em / var // log / wtmp (geralmente). Portanto, esta é a única fonte de arquivo para essa informação.

    
por 22.07.2013 / 17:56

Tags