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)
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.
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
.)
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
Tags networking login linux