Что здесь интерактивного?Вы отправляете данные в свой цикл while, и ни одна из команд в цикле не требует взаимодействия с пользователем.Я считаю это безопасным.
Примечание: ssh-keyscan
отбрасывает комментарии к стандартной ошибке, и вы можете отфильтровать их.Вам, вероятно, также не нужны ошибки от ssh-keygen
, когда запрошенный хост отсутствует:
while read LINE; do
# Remove entry if it exists
ssh-keygen -R "$LINE" 2>/dev/null
# Append new hashed key to file
ssh-keyscan -H "$LINE" >> ~/.ssh/known_hosts 2>/dev/null
done < "$HOST_FILE"
Возможно, вас также заинтересует ssh-hosthashes , скрипт, который янекоторое время назад написал, что ищет дублирующиеся записи в known_hosts
файлах.Он находит дубликаты по открытым ключам, поэтому он будет кластеризовать записи независимо от того, перечислены ли они по IP, имени или хешу.