有没有办法从给定 Host.ssh/config 中获取 Hostname ?例如

Host foo
Hostname 111.11.111.111
User root
Port 22

如果我知道主机,我可以获得主机名,如下所示:
~|> ssh -G foo | grep -E '\bhostname ' | cut -d " " -f 2
111.11.111.111

有什么办法可以反之亦然吗?我知道 ip (111.11.111.111) 但想得到 foo 吗?

最佳答案

您能否尝试以下操作,再添加一个从 ~/.ssh/config 文件中获取主机名的内容。

第一个解决方案: 在 GNU awk 中准备和测试。

awk -v ip="111.11.111.111" -v RS="" '$3=="Hostname" && $4==ip && $1=="Host"{print $2}'  ~/.ssh/config


awk -v ip="111.11.111.111" -v RS="" '
$3=="Hostname" && \
$4==ip && \
$1=="Host"{
  print $2
}'  ~/.ssh/config

第二个解决方案: 在这里使用 tacawk
tac ~/.ssh/config | awk -v ip="111.11.111.111" '$1=="Hostname" && $NF==ip{getline;if($1=="Host"){print $2;exit}}'

关于awk - 给定主机名,从 ~/.ssh/config 获取主机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55197833/

10-13 08:46