如何检查主机是否在您的known_host ssh中

时间:2012-08-27 06:15:56

标签: bash shell ssh expect

我的脚本中有以下命令可以将主机添加到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中?

2 个答案:

答案 0 :(得分:27)

尝试:ssh-keygen -F <hostname>

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

答案 1 :(得分:1)

根据ssh-keygen(1)手册页

  

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