Ответ 1
Попробуйте: ssh-keygen -F <hostname>
Покажет строку known_hosts
, если найденный отпечаток имени хоста найден, и команда возвращает 0
, в противном случае ничего не отображается и команда возвращает 1
.
У меня есть следующая команда в моем 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?
Попробуйте: ssh-keygen -F <hostname>
Покажет строку known_hosts
, если найденный отпечаток имени хоста найден, и команда возвращает 0
, в противном случае ничего не отображается и команда возвращает 1
.
Согласно странице ssh-keygen (1) man
-F имя хоста Найдите указанное имя хоста в файле known_hosts, указав все найденные вхождения. Этот параметр полезен для поиска хеширования имена или адреса хостов, а также могут использоваться совместно с -H для печати найденных ключей в хешированном формате.