Skip to content

Instantly share code, notes, and snippets.

@mahmoudimus
Created April 21, 2014 18:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mahmoudimus/11151082 to your computer and use it in GitHub Desktop.
Save mahmoudimus/11151082 to your computer and use it in GitHub Desktop.
~/.local/bin/sash.sh
# connect to machine
function sash {
if [ -z $1 ]; then
echo "Please enter machine name"
return 1
fi
local instance ip pem idx re ip_idx pem_idx username
idx=1
re='^[0-9]+$'
if [[ $2 =~ $re ]]; then
idx=$2
fi
let pem_idx=idx*2-1
let ip_idx=pem_idx+1
# instance=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=$1" "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[].[KeyName,PublicIpAddress]' --output text)
instance=$(aws ec2 describe-instances --filters "Name=tag:Name,Values=$1" "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[].[KeyName,PrivateIpAddress]' --output text)
if [ -z "${instance}" ]; then
# instance=$(aws ec2 describe-instances --filters "Name=private-ip-address,Values=$1" "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[].[KeyName,PublicIpAddress]' --output text)
instance=$(aws ec2 describe-instances --filters "Name=private-ip-address,Values=$1" "Name=instance-state-name,Values=running" --query 'Reservations[*].Instances[].[KeyName,PrivateIpAddress]' --output text)
if [ -z "${instance}" ]; then
echo Could not find an instance named $1
return 1
fi
fi
ip=$(echo $instance | awk "{print \$$ip_idx}")
pem=${AWS_USER_KEYPAIR}
if [[ -z "$pem" ]]; then
pem=$(echo $instance | awk "{print \$$pem_idx}")
fi
username=${AWS_USER}
if [[ -z "$username" ]]; then
username=ubuntu
fi
echo "Connecting to $1 ($ip)"
ssh -i ~/.aws/$pem.pem $username@$ip
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment