Skip to content

Instantly share code, notes, and snippets.

@guja
Last active June 6, 2021 13:26
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guja/454e2eb7986245b3b0bb to your computer and use it in GitHub Desktop.
Save guja/454e2eb7986245b3b0bb to your computer and use it in GitHub Desktop.
#!/bin/bash
SSH_COMMAND="ssh "
DESCRIBE_COMMAND=$(cat << EOS
aws ec2
--output text
describe-instances
--query
'sort_by(Reservations[].Instances[].{InstanceId:InstanceId,Tags:Tags[?Key==\`Name\`].Value|[0],InstanceType:InstanceType,State:State.Name,Ip:PublicIpAddress},&Tags)'
--filter
'Name=tag:Environment, Values=Dev'
EOS
)
IP=()
COUNT=1
IFS=$'\n'
SERVER_LIST=$(eval $DESCRIBE_COMMAND)
for line in $SERVER_LIST; do
IFS=$'\t'
set -- $line
IP=("${IP[@]}" $3)
LIST=$LIST"$COUNT: $5 $3 $4 $1 $2\n"
(( COUNT++ ))
done
RET=$(echo -e "$LIST" | column -t -s " ")
if type peco > /dev/null 2>&1 ; then
SELECTED="$(echo $RET | peco)"
IFS=$':'
set -- $SELECTED
ITEM=$1
else
echo $RET
echo -n "number? : "
read ITEM
fi
if expr "$ITEM" : '[0-9]*' > /dev/null ; then
if [ 1 -le "$ITEM" -a "$ITEM" -le $COUNT ]; then
(( ITEM-- ))
eval "${SSH_COMMAND}""${IP[$ITEM]}"
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment