我编写了一个小型shell脚本,通过终端自动启动和登录到我的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变量,我希望它在line中使用。
1)如何在命令中使用变量的值。
2)当从断电到断电时,启动实例需要一段时间,所以如何继续检查在脚本中aws启动实例命令之后是否打开了实例,或者在完全启动后检索公共ip,然后将ssh放入其中。我不擅长python,只知道一些基础知识,所以有一种做it.If的pythonic方式吗?有一个示例脚本,让我看看它会更好。
发布于 2020-03-05 09:58:18
您没有在脚本中设置变量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。您可以使用with循环尝试轮询:
while ! aws ec2 describe-instance-statusv --instance-ids i-070107834ab273992 | grep 'something that characterizes running' ; do
sleep 5
donehttps://stackoverflow.com/questions/60541789
复制相似问题