![Preencher automaticamente nomes de host ao usar SSH no arquivo de histórico](https://rvso.com/image/89155/Preencher%20automaticamente%20nomes%20de%20host%20ao%20usar%20SSH%20no%20arquivo%20de%20hist%C3%B3rico.png)
Estou procurando um recurso que me ajude a preencher automaticamente os servidores que "destruí" em algum momento e estão no meu .bash_history
arquivo sem mexer no known_hosts
arquivo ou /etc/bash_completition
, apenas pegue-os do meu arquivo history
.
Não posso mexer no known_hosts
arquivo porque as informações nele contidas são "criptografadas" e procurar como evitar isso não é tão importante.
por exemplo
$ tail -n 2 ~/.ssh/known_hosts
|1|D90I41jNxFy83ZhAoyG7gj0+LpM=|Zkru+0Yi9Q9UNafHpj1IVMGGnAw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArih5PrEeGsMHm+9ytkiiOgNNIh6fQAEFfdDw9IwkOGs13g+YN6k61rRbdXj97N+vvuGslcCL9uDMY+M6bqDX4k2kGJuvmsSBgIWOjOiOtrW6wWaflGO0OKQ39F1R92Bw3gB1kNg8Es3XjNE1D+CRXt/EQLWLBFmF3p41PpoRg/Gyvw4XqQSMOYdGsr0OaE8ozrXWO2rQo2NDe6BDJzSGqZ234jCtnRLEtFBFvisTEbNCYFRkhKMSfrUecyK5bjHRehEHKfsPxNDTCOl7xrx1DDTng/BIgxyCA21s+xa05oNulkMMd/1qNrekoUUFxwJpb1rf6vrW5CkeMIOhCr5Nxw==
|1|Cl6c716uEoPmovaRDDwkM+bYFTc=|VXUrsTRDptMOg/Nm3anFMwjy5O8= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArih5PrEeGsMHm+9ytkiiOgNNIh6fQAEFfdDw9IwkOGs13g+YN6k61rRbdXj97N+vvuGslcCL9uDMY+M6bqDX4k2kGJuvmsSBgIWOjOiOtrW6wWaflGO0OKQ39F1R92Bw3gB1kNg8Es3XjNE1D+CRXt/EQLWLBFmF3p41PpoRg/Gyvw4XqQSMOYdGsr0OaE8ozrXWO2rQo2NDe6BDJzSGqZ234jCtnRLEtFBFvisTEbNCYFRkhKMSfrUecyK5bjHRehEHKfsPxNDTCOl7xrx1DDTng/BIgxyCA21s+xa05oNulkMMd/1qNrekoUUFxwJpb1rf6vrW5CkeMIOhCr5Nxw==
eu encontreiesta soluçãomas por outro motivo não importante, não tenho o ~/.ssh/config
arquivo.
Responder1
Uma maneira muito mais fácil seria desabilitar o hash do seu para known_hosts
permitir o preenchimento automático de todo o histórico ou apenas listar seus hosts no seu (você pode armazenar lá todos os seus e ou criar aliases).HashKnownHosts no
~/.ssh/config
~/.ssh/config
Ports
Users
Agradeço a criatividade, mas por que reinventar a roda quando já temos a mesma funcionalidade pronta para uso (exceto o envio do Ubuntu HashKnownHosts yes
por padrão, que quebra essa funcionalidade).
Responder2
Então, como eu só quero saber como preencher automaticamente os destinos de meus hosts dentro do bash_history
arquivo, descobri esse recurso na esperança de ajudar alguém na mesma situação.
Basta executar a seguinte linha
$ complete -W "$(echo $(grep '^ssh ' .bash_history | sort -u | sed 's/^ssh //'))" ssh
complete
- é uma função interna do bash. Portanto, não há um binário no sistema. Ele controla como os comandos serão concluídos ao pressionar-W
- faça uma lista de palavras de preenchimento automáticogrep '^ssh' .bash_history
- retorna todas as linhas que começam com ssh do.bash_history
arquivosort -u
- torne as linhas de saída únicassed 's/^ssh //'
- remova assh
string inicial de cada linhassh
- ao executarssh
o comando
Se você não apenas ssh hostname
usa outros como ssh user@hostname
ou ssh user@hostname -p 2222
você deve brincar com os recursos regex
e grep|sed
para manter apenas o hostname
ou o que deseja preencher automaticamente
Insira a linha completa em seu .bashrc
arquivo para ter o recurso de preenchimento automático sempre que iniciar uma sessão.