сценарий оболочки для запуска экземпляров ec2 и s sh, а также введение задержки во вторую команду - PullRequest
0 голосов
/ 05 марта 2020

Я написал небольшой скрипт оболочки для автоматизации запуска и входа в мои экземпляры aws через терминал.

#!/bin/bash
aws ec2 start-instances --instance-ids i-070107834ab273992


public_ip=aws ec2 describe-instances --instance-ids i-070107834ab273992 \
        --query 'Reservations[*].Instances[*].PublicDnsName' --output text


AWS_KEY="/home/debian/cs605 data management/assignment6/mumbai instance keys"

ssh -v -i "$AWS_KEY"/mumbai-instance-1.pem\
        ec2-user@$public_ip

~
~
Проблема в переменной public_ip, которую я хочу он будет использоваться в строке s sh
1) как получить значение переменной для использования в команде.
2) Экземпляр загружается некоторое время, когда он включается с выключения питания на включите питание, чтобы я продолжал проверять, включены ли экземпляры после aws команды запуска экземпляра в скрипте, или извлеките publi c ip после его полного запуска и затем вставьте в него sh. Я не очень хорошо разбираюсь в python, знаю только основы, поэтому есть ли способ сделать это на pythoni c. Если есть пример сценария, где мне было бы лучше взглянуть на него.

1 Ответ

1 голос
/ 05 марта 2020

Вы не устанавливаете переменную public_ip в своем скрипте. Меня не удивит, если скрипт пожалуется на «ec2: команда не найдена».

Чтобы установить переменную:

public_ip=$(aws ec2 describe-instances --instance-ids i-070107834ab273992 --query 'Reservations[*].Instances[*].PublicDnsName' --output text)

(заявление об отказе: я не использовал aws, поэтому я предположим, что команда верна).

Информация о том, запущен ли экземпляр, должна быть доступна с

aws ec2 describe-instance-status

Возможно, вы захотите применить некоторые фильтры и / или grep для указания c результат. Вы можете попробовать опрашивать с помощью l oop:

while !  aws ec2 describe-instance-statusv --instance-ids i-070107834ab273992 | grep 'something that characterizes running' ; do
    sleep 5
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...