- _known_hosts(): check /etc/ssh/ssh_config and ~/ssh/config to get location
of global and user known hosts files, rather than just assuming we know where they are
This commit is contained in:
parent
9d8cffb3fe
commit
d3341c3a4c
@ -1,6 +1,6 @@
|
|||||||
# bash_completion - some programmable completion functions for bash 2.05a
|
# bash_completion - some programmable completion functions for bash 2.05a
|
||||||
#
|
#
|
||||||
# $Id: bash_completion,v 1.303 2002/05/05 23:28:59 ianmacd Exp $
|
# $Id: bash_completion,v 1.304 2002/05/06 01:31:28 ianmacd Exp $
|
||||||
#
|
#
|
||||||
# Copyright (C) Ian Macdonald <ian@caliban.org>
|
# Copyright (C) Ian Macdonald <ian@caliban.org>
|
||||||
#
|
#
|
||||||
@ -1548,8 +1548,8 @@ _chkconfig()
|
|||||||
#
|
#
|
||||||
_known_hosts()
|
_known_hosts()
|
||||||
{
|
{
|
||||||
local cur user suffix
|
local cur user suffix global_kh user_kh
|
||||||
local -a kh
|
local -a kh config
|
||||||
|
|
||||||
COMPREPLY=()
|
COMPREPLY=()
|
||||||
cur=${COMP_WORDS[COMP_CWORD]}
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
@ -1557,10 +1557,32 @@ _known_hosts()
|
|||||||
[[ $cur == *@* ]] && user=${cur%@*}@ && cur=${cur#*@}
|
[[ $cur == *@* ]] && user=${cur%@*}@ && cur=${cur#*@}
|
||||||
kh=()
|
kh=()
|
||||||
|
|
||||||
|
# ssh config files
|
||||||
|
[ -r /etc/ssh/ssh_config ] && config[0]=/etc/ssh/ssh_config
|
||||||
|
[ -r ~/.ssh/config ] && config[1]=~/.ssh/config
|
||||||
|
|
||||||
|
if [ ${#config[@]} -gt 0 ]; then
|
||||||
|
# expand path (if present) to global known hosts file
|
||||||
|
global_kh=$( eval echo $( sed -ne 's/^GlobalKnownHostsFile['$'\t '']*\(.*\)$/\1/p' ${config[@]} ) )
|
||||||
|
# expand path (if present) to user known hosts file
|
||||||
|
user_kh=$( eval echo $( sed -ne 's/^UserKnownHostsFile['$'\t '']*\(.*\)$/\1/p' ${config[@]} ) )
|
||||||
|
fi
|
||||||
|
|
||||||
|
# choose which global known hosts file to use
|
||||||
|
if [ -r "$global_kh" ]; then
|
||||||
|
kh=( "$global_kh" )
|
||||||
|
else
|
||||||
[ -r /etc/known_hosts ] && kh[0]=/etc/known_hosts
|
[ -r /etc/known_hosts ] && kh[0]=/etc/known_hosts
|
||||||
[ -r /etc/known_hosts2 ] && kh[1]=/etc/known_hosts2
|
[ -r /etc/known_hosts2 ] && kh[1]=/etc/known_hosts2
|
||||||
[ -r ~/.ssh/known_hosts ] && kh[2]=~/.ssh/known_hosts
|
fi
|
||||||
[ -r ~/.ssh/known_hosts2 ] && kh[3]=~/.ssh/known_hosts2
|
|
||||||
|
# choose which user known hosts file to use
|
||||||
|
if [ -r "$user_kh" ]; then
|
||||||
|
kh=( ${kh[@]} "$user_kh" )
|
||||||
|
else
|
||||||
|
[ -r ~/.ssh/known_hosts ] && kh=( ${kh[@]} ~/.ssh/known_hosts )
|
||||||
|
[ -r ~/.ssh/known_hosts2 ] && kh=( ${kh[@]} ~/.ssh/known_hosts2 )
|
||||||
|
fi
|
||||||
|
|
||||||
# If we have known_hosts files to use
|
# If we have known_hosts files to use
|
||||||
if [ ${#kh[@]} -gt 0 ]; then
|
if [ ${#kh[@]} -gt 0 ]; then
|
||||||
@ -1622,7 +1644,7 @@ _ssh()
|
|||||||
*)
|
*)
|
||||||
_known_hosts
|
_known_hosts
|
||||||
|
|
||||||
[ -r /etc/ssh/config ] && config[0]=/etc/ssh/config
|
[ -r /etc/ssh/ssh_config ] && config[0]=/etc/ssh/ssh_config
|
||||||
[ -r ~/.ssh/config ] && config[1]=~/.ssh/config
|
[ -r ~/.ssh/config ] && config[1]=~/.ssh/config
|
||||||
|
|
||||||
# get host aliases from config files
|
# get host aliases from config files
|
||||||
|
Loading…
x
Reference in New Issue
Block a user