Задать вопрос
@nihi1ist

Как сформировать .known_hosts для списка IP-адресов?

Имеется список IP-адресов. Для него нужно сформировать файл ~/.ssh/known_hosts. Нашел команду которая выдает информацию в нужном формате:
ssh-keyscan -t rsa,ed25519 $IP_ADDRESS
Проблема в том, что когда запускаешь команду через скрипт, то скрипт выдает ошибку:
: Name or service not known
Сам скрипт
#!/usr/bin/env bash

KEYSCAN=/usr/bin/ssh-keyscan
KNOWN_HOSTS=~/.ssh/known_hosts.new
HOSTS=./hosts.ini

while read -r ip; do
    $KEYSCAN -t ed25519,rsa "$ip" >> "$KNOWN_HOSTS"
done < ${HOSTS}

Подскажите, что делаю не так?
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@nihi1ist Автор вопроса
В итоге ответ получил от нейросетки google. Проблема была в файле hosts.ini:
DOS line endings: If the script was created on a Windows system and transferred to a Linux environment, DOS line endings can cause issues with commands, especially when dealing with variables containing hostnames. Use dos2unix to convert them.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
xargs -n 1 -a ./hosts.ini ssh-keyscan -t rsa,ed25519 >> ~/.ssh/known_hosts.new

Если порты указаны через двоеточие:
cat ./hosts.ini | awk -F : -e '{ print "-p " $2 " " $1 }' | xargs -l ssh-keyscan -t rsa,ed25519 >> ~/.ssh/known_hosts.new
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы