Gostaria de configurar a conclusão do comando no zsh para exibir os nomes de host depois de digitar
ssh [TAB]
retirando os nomes do meu arquivo .ssh / config (e de preferência de known_hosts e / etc / hosts e em qualquer outro lugar que faça sentido) e apresentando uma única lista.
Faz parte disso atualmente, mas
- ele não usa .ssh / config
- requer primeiro um nome de usuário, embora o uso de .ssh / config torne desnecessário digitar nomes de usuário
- apresenta várias listas (provavelmente uma de known_hosts e outra de / etc / hosts, mas não verifiquei isso)
Então, quero incluir nomes de usuário conhecidos e nomes de host conhecidos na lista (de preferência única) depois de digitar ssh [TAB]
(Estou chegando aqui antes do Google porque 1) resultará na resposta armazenada aqui e 2) é provavelmente mais eficiente. Se ninguém mais responder, vou procurar a resposta.)
ssh
shell
zsh
command-line-interface
iconoclasta
fonte
fonte
Respostas:
Aqui está a parte relevante da minha
.zshrc
. Não mudou desde 2002, por isso posso escrever de forma diferente hoje, mas ainda funciona para completar os nomes de host~/.ssh/config
e~/.ssh/known_hosts
(seHashKnownHosts
estiver desativado - não existia naqueles dias).fonte
A função que fornece a
ssh
conclusão está localizada/usr/share/zsh/functions/Completion/Unix/_ssh
em meu sistema.Consulte também
man zshcompsys
a documentação (especialmente faça uma pesquisa em "host" que aparece em vários locais e "ssh" que aparece em alguns locais).Pode ser possível que a adição de um
zstyle
comando ao seu~/.zshrc
faça o que você está procurando sem precisar modificar a função de conclusão.fonte
/usr/share/zsh/4.3.9/functions/_ssh
Mac OS X (adapte a versão)Eu faço isso usando uma lista de todos os hosts em um determinado domínio usando dig. Você pode substituir a função abaixo por qualquer sistema de pesquisa que desejar, incluindo o arquivo hosts ou uma lista estática:
Nota: O código acima pode não substituir completamente o sistema completo do comando ssh em sua configuração. Se você tiver problemas, tente alterar o comando "ssh" para outro comando aleatório como "mycompletetest" e verifique se a conclusão funciona para isso.
Observe também que isso transfere a zona DNS a cada conclusão! Se você usar muito isso ou em um domínio estático, faria sentido fazer a pesquisa e salvar o resultado; em sua função de pesquisa, basta definir reply = zone_result.
fonte
dig axfr mydomain.com @ns1.mydomain.com
. Certifique-se de poder executar isso manualmente e parte da saída deve ser uma lista de hosts registrados nesse domínio e seus A ou qualquer outro registro. Era para isso que eu estava procurando, depois cortando apenas a parte do nome do host e não o registro totalmente qualificado.Eu gosto de manter meu
known_hosts
arquivo hash e prefiro nãoHashKnownHosts
desligar. Eu descobri que semear o que @Gilles tem com o que já está na minha história tem sido bastante eficaz para minhas necessidades.Além disso, FWIW, é isso que eu usei para o Bash:
fonte