SSH:如何获取 ssh 后按下 Tab 键时自动完成的服务器列表?

SSH:如何获取 ssh 后按下 Tab 键时自动完成的服务器列表?

当我输入 ssh 后按 Tab 键完成时,我得到了一个可以通过 ssh 进入的服务器列表。我如何通过单个命令获取相同的列表?

伪命令如下:

ssh --list-available-servers

我无法找到诀窍/usr/share/bash-completion/completions/ssh

答案1

您可以在函数 _ssh() 的末尾看到 ssh 浏览 ssh 配置文件的代码块,稍后

_known_hosts_real -a -F "$configfile" "$cur"

它从已知主机文件中提取主机名。

您可以手动调用此命令,但结果将以变量形式返回,而不是写出:

$ . /usr/share/bash-completion/completions/ssh # doesn't have to be required
$ COMPREPLY=(); _known_hosts_real -a "" && echo ${COMPREPLY[*]}

您将从已知主机文件 () 中获取建议主机的列表~/.ssh/known_hosts

如果您还想获取配置文件中的信息,则还需要添加配置文件参数:

$ COMPREPLY=(); _known_hosts_real -F ~/.ssh/config -a "" && echo ${COMPREPLY[*]}

相关内容