Скрипты Bash для создания файла hosts из вывода amazon api

Я новичок в написании сценариев. Мое требование - создать файл /etc/hosts, как показано ниже, из вывода aws api.

Hostname PrivateIP

abc x.y.x.z

cde a.b.c.c

и так далее.

У меня есть следующий скрипт,

#!/bin/bash
export AWS_ACCESS_KEY=abc
export AWS_SECRET_KEY=cde
export EC2_URL=https://url.com
source ~/.bashrc
ec2-describe-instances --filter "group-name=mygroup" > /tmp/info
name=$(cat /tmp/info| grep 'Hostname' | cut -f 5)
ip=$(cat /tmp/info| grep 'INSTANCE' | cut -f 18)
echo -e $name"\t"$ip

в настоящее время выход находится в одной строке. Я уверен, что мне нужно для цикла. Но не уверен, как это сделать. Пожалуйста посоветуй.

2 ответа

Я не могу вспомнить точный формат команды ec2-description-instances, но вот простой способ обработки нескольких строк вывода, которые отформатированы в поля, разделенные вкладками:

input=/tmp/info
while read field1 field2 field3 ...; do        # fieldx variables map to each field in the output
    # process the fields you need
done < "$input"

Если вы хотите цикл for для переменной name, попробуйте что-то вроде этого:

IFS=$'\n'
name=(`cat /tmp/info| grep 'Hostname' | cut -f 5`)
unset IFS

# For loop based on name
for i in "${name[@]}"
do
   # process each name ($i)
done
Другие вопросы по тегам