Скрипты 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