Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
ssh host completion (take 2)
- X-seq: zsh-users 23231
- From: John Benninghoff <john.benninghoff@xxxxxxxxx>
- To: zsh-users@xxxxxxx
- Subject: ssh host completion (take 2)
- Date: Sun, 11 Mar 2018 12:30:43 -0700
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=gJ1DOsnGL/hCek/QNzoR9IOGR/MX0M6mxeyxHdhO3pk=; b=JLo4V0kJ9bMPwFjyC30BmQq1aEaPfWvaCzOF7kvWQHlGjJRqVhYKurONeqU51vKKPM h+63vwRYonZiYcCyKKo7S/uPxi+bh7NCQDlNFJ71LBJjW3KX8qLTNs13kbMpCIetmxaW xH0j0ugZFY7Ar3hgV3DThRgTwJ+eFU+o38O7tnlbG/J/yzPTiFhOa2JXh/34rbTCG0aE 922n7WdHN0see7RLfmISrfvIRHlft453nEQ61Th7C+8sh5jeTxgRoU735zGVt30GzGeF TcrqubiWLN6P5TCsSi39Yd+DbEsgpEB4vvPcp7uLNIqyOKxywxUJd9mFy6PqvqGFg9Y1 f3XQ==
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- List-unsubscribe: <mailto:zsh-users-unsubscribe@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
[Re-sending due to email bounce although my email is in the zsh archive]
I have tried to customize ssh completion using zstyle so that it uses only
the host names configured in my ~/.ssh/config file. I use the following
section in my .zshrc file to try to get the desired behavior:
if [[ -r ~/.ssh/config ]]; then
sconf=( $(sed -n '/^Host[=\t ]/{s///;s/#.*//;p;}' ~/.ssh/config) )
zstyle ':completion::complete:ssh:argument-1:' tag-order !users
zstyle ':completion::*:ssh:*:' hosts $sconf
#zstyle -e ':completion::*:ssh:*:' hosts REPLY=$sconf
#zstyle -e ':completion::*:ssh:*:' hosts reply=$sconf
# Use ^Xh to see context and tags applicable in CLI position
fi
Some of my failed zstyle attempts are commented out. I used the first
zstyle command to eliminate the built-in users completion I didn't
want(!users). The 2nd remaining zstyle command attempts to give me
hostname completion based on hostnames in ~/.ssh/config. I know there is a
built-in ssh hostname completion based on /etc/hosts. I want to remove
that and replace it with the $sconf setting. I'm not sure how to remove
the built-in hostname completion.
*jbenninghoff@jb-mbpro 1: zstyle*
completer
:completion:* _complete _ignored
filename
:compinstall '$HOME/.zshrc'
hosts
:completion::*:ssh:*: kubeproxy pslab psnode184 ds-cluster-01
aws-ds rs1 rs-sles01 psedge ps135 psnode135 ansible dellclient dellnvme hec
lenovo-sr630 s8 l8s lenovo b143-l8seth0 t1 t2 sles4 sles3 sles2 sles medge
tag-order
:completion::complete:ssh:argument-1: !users
Strangely, zstyle shows the correct list of hostnames in hosts section but
those do not get used when I attempt completion by starting with 'ps' then
tab for example.
I get:
*jbenninghoff@jb-mbpro 1: ssh psnode4*
psnode40 psnode41 psnode42 psnode43
psnode44psnode40.ps psnode41.ps psnode42.ps psnode43.ps
psnode44.ps
Which are hostnames in /etc/hosts but not in ~/.ssh/config.
When I check the ssh completion in effect right after I type ssh by using
^Xh, I see the below output:
*jbenninghoff@jb-mbpro 1: ssh*
tags in context :completion::complete:ssh::
argument-1 options (_arguments _ssh _ssh)
tags in context :completion::complete:ssh:argument-1:
hosts users (_ssh _ssh)
hosts (_hosts _combination _ssh_hosts _ssh _ssh)
users (_users _combination _ssh_users _ssh _ssh)
jbenninghoff@jb-mbpro 1: zsh --version
zsh 5.3 (x86_64-apple-darwin17.0)
jbenninghoff@jb-mbpro 1: type -a zsh
zsh is /bin/zsh
/John
Messages sorted by:
Reverse Date,
Date,
Thread,
Author