Как проверить, находится ли хост в вашем known_host ssh

У меня есть следующая команда в моем script, которая добавляет хост к известным узлам в ssh.

VAR2=$(expect -c '
 spawn ssh -o StrictHostKeyChecking=no '"[email protected]$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?

Ответ 1

Попробуйте: ssh-keygen -F <hostname>

Покажет строку known_hosts, если найденный отпечаток имени хоста найден, и команда возвращает 0, в противном случае ничего не отображается и команда возвращает 1.

Ответ 2

Согласно странице ssh-keygen (1) man

-F имя хоста Найдите указанное имя хоста в файле known_hosts, указав все найденные вхождения. Этот параметр полезен для поиска хеширования имена или адреса хостов, а также могут использоваться совместно с -H для печати найденных ключей в хешированном формате.