我可以使用SSH的通配符bash别名

时间:2017-07-25 02:51:02

标签: shell unix

我的主机名列表以web1,web2,...,web200,web201.myserver.ltd等开头

我已经在.ssh / config中使用了

Host *
    User myuser

并在resolv.conf中:

search myserver.ltd

因此,我可以使用ssh myuser@web200.myserver.ltd

而不是ssh web200

问题:我有没有办法在我的.zshrc文件中设置通配符别名,所以当我输入web200时,它会执行ssh web200? (同样适用于以webxxx开头的任何服务器。

我知道我可以通过为每个webxxx服务器使用单独的别名来设置它,但我正在寻找一条线(或几条线)来做到这一点。

1 个答案:

答案 0 :(得分:2)

使用zsh,您可以使用command_not_found_handler hook

command_not_found_handler () {
[[ $1 = web* ]] && ssh "$@"
}

然后:

$ web200
ssh: Could not resolve hostname web200: Temporary failure in name resolution
zsh: command not found: web200