From 80a21f7a75d4b95a36c5743624c2ee25d329b2d9 Mon Sep 17 00:00:00 2001 From: Andrey Chernih Date: Thu, 19 Oct 2017 06:04:32 -0700 Subject: [PATCH] [completion] Fix known_hosts completion for custom port number (#1092) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Handles records like "[20.20.7.168]:9722 ssh-rsa ..." This is a standard format for servers running on custom port according to http://man.openbsd.org/sshd.8#SSH_KNOWN_HOSTS_FILE_FORMAT A hostname or address may optionally be enclosed within ‘[’ and ‘]’ brackets then followed by ‘:’ and a non-standard port number. --- shell/completion.bash | 2 +- shell/completion.zsh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/shell/completion.bash b/shell/completion.bash index 9e299ec..cd2b10b 100644 --- a/shell/completion.bash +++ b/shell/completion.bash @@ -234,7 +234,7 @@ _fzf_complete_telnet() { _fzf_complete_ssh() { _fzf_complete '+m' "$@" < <( cat <(cat ~/.ssh/config /etc/ssh/ssh_config 2> /dev/null | command grep -i '^host' | command grep -v '*' | awk '{for (i = 2; i <= NF; i++) print $1 " " $i}') \ - <(command grep -oE '^[a-z0-9.,:-]+' ~/.ssh/known_hosts | tr ',' '\n' | awk '{ print $1 " " $1 }') \ + <(command grep -oE '^[[a-z0-9.,:-]+' ~/.ssh/known_hosts | tr ',' '\n' | tr -d '[' | awk '{ print $1 " " $1 }') \ <(command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0') | awk '{if (length($2) > 0) {print $2}}' | sort -u ) diff --git a/shell/completion.zsh b/shell/completion.zsh index d3e64d8..e2ed0b1 100644 --- a/shell/completion.zsh +++ b/shell/completion.zsh @@ -117,7 +117,7 @@ _fzf_complete_telnet() { _fzf_complete_ssh() { _fzf_complete '+m' "$@" < <( command cat <(cat ~/.ssh/config /etc/ssh/ssh_config 2> /dev/null | command grep -i '^host' | command grep -v '*' | awk '{for (i = 2; i <= NF; i++) print $1 " " $i}') \ - <(command grep -oE '^[a-z0-9.,:-]+' ~/.ssh/known_hosts | tr ',' '\n' | awk '{ print $1 " " $1 }') \ + <(command grep -oE '^[[a-z0-9.,:-]+' ~/.ssh/known_hosts | tr ',' '\n' | tr -d '[' | awk '{ print $1 " " $1 }') \ <(command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0') | awk '{if (length($2) > 0) {print $2}}' | sort -u )