我正在为 SSH 开发一个简单的包装脚本,以便在实际执行 SSH 之前进行一些预处理(确切地说:使用 keychain/ssh-agent 加载每个主机的密钥)。
为了做到这一点,我需要从命令行参数中提取主机名。包装器应支持 SSH 接受的所有选项 — 因此,如果用户打算在远程端以非交互方式运行命令,那么我使用最后一个命令行参数的第一个简单方法将不起作用。
有谁见过一种简单的、仅使用 shell 的、可靠地获取主机名的方法吗?
提前致谢!
答案1
只需使用ssh -G
:
ssh -G -nNT -L10000:localhost:10000 admin@yo|grep "^hostname"|awk '{print $2}'
将打印yo
。如果您的 中有匹配项,它将完全解析为真实主机名.ssh/config
。