有没有办法从给定 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
第二个解决方案: 在这里使用
tac
和 awk
。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/