はじめに
踏み台サーバーなどのEC2から別のEC2にSSH接続する際、毎回IPアドレスを確認するのが面倒なので、AWS CLIを用いたシェルスクリプトを作成しました。
スクリプト
EC2のNameタグからIPアドレスを取得する。
ファイル名を{Nameタグ}.sh
にする必要がある。
{Nameタグ}.sh
#!/bin/sh
readonly BASENAME=$(basename $0)
readonly USER_NAME=ec2-user
readonly KEY_FILE={秘密鍵}.pem
readonly TAG_NAME=${BASENAME%%.*}
readonly IP_ADDRESS=$(aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" "Name=tag-key,Values=Name" "Name=tag-value,Values=${TAG_NAME}" --query 'Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddress' | jq -r '.[0]')
echo ${IP_ADDRESS}
ssh -l ${USER_NAME} -i ~/.ssh/${KEY_FILE} ${IP_ADDRESS} -o 'StrictHostKeyChecking no'
実行コマンド
chmod 755 {Nameタグ}.sh
sh {Nameタグ}.sh