É possível obter uma lista de servidores Linux nos quais estou atualmente conectado?

4

No meu local de trabalho, temos várias máquinas Linux em uma rede isolada e, ocasionalmente, preciso determinar em qual delas estou logado. Isso pode ser uma dor, porque eu geralmente tenho um grande número de janelas de terminal multi-tab espalhadas em dois monitores, quatro espaços de trabalho do gnome e, às vezes, várias sessões de login.

Eu tenho uma lista da maioria das máquinas que uso e algo como $(rsh $M ps -wef | grep username | wc -l) geralmente funciona, mas é lento e não robusto. Espero que haja algum utilitário Unix ou serviço de diretório que rastreie todos os logins de rede e que eu possa simplesmente verificar isso e grep para meu nome de usuário. Estou surpreso por não ter conseguido encontrar isso pesquisando no Google e suspeito que essa utilidade não existe, mas espero estar errada.

    
por monguin 30.06.2010 / 19:30

3 respostas

1

Muito simples e mostrando os nomes ou atalhos que você usa quando especifica o servidor para ssh:

ps --no-heading -o args -C ssh

retorna:

ssh server1
ssh server2
ssh server1

(veja man ssh_config para detalhes de definição de atalhos)

    
por 03.07.2010 / 01:43
2

Não existe esse utilitário, mas uma coisa que pode aproximá-lo é olhar para netstat e verificar se o destino está em uma lista de servidores e se o nome do processo é ssh.

Além disso, não use o rsh, a menos que você goste de comprometer suas máquinas.

Editar: mais informações

O netstat lista todas as conexões de rede atualmente ativas para qualquer lugar, considerando os sinalizadores corretos. (%código%). Aproximando-se do seu problema de outra direção, você já tentou organizar mais suas conexões? Eu usaria man netstat e nomearia cada janela na tela com o servidor ao qual você está se conectando (Usando screen .)

    
por 30.06.2010 / 19:37
1

Preciso, mas mais rápido que o netstat:

lsof -i -a -c ssh

Ele retorna dados como este:

COMMAND   PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ssh     15072  myuser    3u  IPv4 8118099      0t0  TCP self:51941->server1:22 (ESTABLISHED)
ssh     26242  myuser    3u  IPv4 9051562      0t0  TCP self:35685->server2:22 (ESTABLISHED)
ssh     26249  myuser    3u  IPv4 9051889      0t0  TCP self:46646->server1:22 (ESTABLISHED)

Assim, você pode remover a lista de nomes de servidores assim:

lsof -i -a -c ssh | sed -n -e 's/.*>//' -e 's/:.*//p' | sort -u

que retorna:

server1
server2
    
por 03.07.2010 / 01:39