consulでホストを管理してる状態で、bash-completionでのsshの補完候補にconsul members
の結果を使いたかったんです。個別にsshすると最近は若者にdisられるそうですが、それはそれこれはこれとして…
/etc/bash_completion
の _known_hosts_real
の定義を以下のように置き換えるととりあえずできました。共通のを上書きしたくなければ個別に .bash_profile などで再定義すればよいですね。
_known_hosts_real()
{
local members=$(consul members -status=alive | awk '!/Node/{printf("%s ", $1)}')
COMPREPLY=( $( \
compgen -W "$members" \
${COMP_WORDS[COMP_CWORD]} \
) )
return 0
}