15

我的脚本中有以下命令可以将主机添加到 ssh 中的已知主机。

VAR2=$(expect -c '
 spawn ssh -o StrictHostKeyChecking=no '"$REMOTE_HOST_USER@$REMOTE_HOST_IP"'
 expect "*?assword:*"
 send "'"$REMOTE_HOST_PASSWD"'\r"
 expect { 
 "Permission denied, please try again." {
 exit '"$WRONG_PASSWORD"' 
 }
 }
 ')

工作正常,但如果主机已经在 known_hosts 中,我需要在命令之前进行控制,如果它已经在 known_hosts 中,则不执行命令。如何检查主机是否在 known_hosts 中?

4

2 回答 2

39

尝试:ssh-keygen -F <hostname>

known_hosts如果找到主机名指纹并且命令返回,将显示该行0,否则不显示任何内容并且命令返回1

于 2012-08-27T06:20:54.630 回答
3

根据 ssh-keygen(1) 手册页

-F 主机名 在 known_hosts 文件中搜索指定的主机名,列出找到的所有事件。此选项对于查找散列主机名或地址很有用,也可以与 -H 选项结合使用,以散列格式打印找到的键。

于 2012-08-27T09:33:25.343 回答