首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动ec2实例和ssh的shell脚本,并在第二个命令中引入延迟

启动ec2实例和ssh的shell脚本,并在第二个命令中引入延迟
EN

Stack Overflow用户
提问于 2020-03-05 09:16:54
回答 1查看 531关注 0票数 0

我编写了一个小型shell脚本,通过终端自动启动和登录到我的aws实例。

代码语言:javascript
复制
#!/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变量,我希望它在line中使用。

1)如何在命令中使用变量的值。

2)当从断电到断电时,启动实例需要一段时间,所以如何继续检查在脚本中aws启动实例命令之后是否打开了实例,或者在完全启动后检索公共ip,然后将ssh放入其中。我不擅长python,只知道一些基础知识,所以有一种做it.If的pythonic方式吗?有一个示例脚本,让我看看它会更好。

EN

Stack Overflow用户

回答已采纳

发布于 2020-03-05 09:58:18

您没有在脚本中设置变量public_ip。如果脚本抱怨"ec2:命令未找到“,我不会感到惊讶。

要设置变量,请执行以下操作:

代码语言:javascript
复制
public_ip=$(aws ec2 describe-instances --instance-ids i-070107834ab273992 --query 'Reservations[*].Instances[*].PublicDnsName' --output text)

(免责声明:我没有使用aws,所以我假设命令是正确的)。

有关实例是否正在运行的信息,请使用

代码语言:javascript
复制
aws ec2 describe-instance-status

您可能希望为特定的结果应用一些过滤器和/或grep。您可以使用with循环尝试轮询:

代码语言:javascript
复制
while !  aws ec2 describe-instance-statusv --instance-ids i-070107834ab273992 | grep 'something that characterizes running' ; do
    sleep 5
done
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60541789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档